ICode9

精准搜索请尝试: 精确搜索
  • math.h -lm随记(一)2022-09-03 21:01:37

    最近可能随手会记很多C/C++语法相关的东西,都是随手记的,如果后续有空可能会整理成文章。 1.关于gcc的lm编译选项: 观察易知,像stdio.h,stdlib.h或者math.h之类的头文件,包含的都是函数的声明而非定义。(关于声明和定义,详见之前《浅谈指针》的文章系列)而真正的函数定义,都是包含在库中的。

  • 从C过渡到C++——换一个视角深入数组[真的存在高效吗?](2)2022-08-22 19:30:55

    从C过渡到C++——换一个视角深入数组[真的存在高效吗?](2) C风格高效的数组遍历 在过渡到C++之前我还是想谈一谈如何书写高效的C的代码,这里的高效指的是C代码的高效,也就是在不开启编译器优化下,C层级的自由化,编译器优化固然很好,但是源代码的高效远远要胜于编译器的优化,因为在大多数情

  • X86汇编层面的方法调用。2022-08-20 23:31:49

    本文主要描述了X64下的汇编层面的方法调用。具体来说就是一个C语言的方法被另外一个方法调用,是如果在汇编语言X64的规范中实现的。 1.假设有如下C语言文件 "test.c" 点击查看代码 int sumNine(int one, int two, int three, int four, int five, int six, int seven,

  • DASCTF2022七月赋能赛 eyfor2022-07-26 13:00:24

    checksec Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) File pwn4: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.s

  • C++中类的成员函数是如何调用this指针2022-07-10 01:31:31

    C++中类的成员函数是如何调用this指针 起因 最近工作中遇到一个有趣的闪退问题,原因很简单,就是因为调用了一个空对象的成员函数。但是在dump的堆栈信息里发现程序终止的地方并不是函数刚开始,而是在函数内部执行很多语句后才终止,类似于: class Example { // 不重要的乱七八糟 void

  • stanford cs110l lec12022-06-02 15:04:34

    1.1 gets函数与栈帧 gets函数不安全 启动gdb rip寄存器存放的是下一条指令要执行的地址,rbp寄存中

  • .Net GC 结构体GCInfo剖析,2022-05-29 14:35:19

    前言: dotnet已经发展到了 preview 7的版本,这个GC回收的文章或者视频非常少,几乎没有看到,有个别的也是模糊不清或者三言两语,或者太过于笼统,或者作者自己都没搞明白为啥是这样。至于深入到GC里面的GCinfo结构体就更少见了。因为这个结构体里面包含了根对象所在的地址,对于垃圾回收的第

  • BUUCTF_N1book_RE_[第五章 CTF之RE章]BabyAlgorithm2022-05-15 21:32:49

    64位,无壳 主函数: __int64 __fastcall main(int a1, char **a2, char **a3) { __int64 result; // rax int i; // [rsp+Ch] [rbp-E4h] char v5[16]; // [rsp+10h] [rbp-E0h] BYREF char s[64]; // [rsp+20h] [rbp-D0h] BYREF char v7[64]; // [rsp+60h] [rbp-90h] BYR

  • [TSCTF 2022] Reverse赛题复现2022-05-14 14:31:18

    再不学逆向真要被开了 还是太菜了,T2 T3要么就是找到了加密方法但是不知道怎么把代码逻辑联系起来,要么就是对应的密文找不到,还得加把劲学习啊。。 happy_mota 赛中直接玩游戏玩到底玩出来的,现在试试逆向方法。 把exe解包后得到两个重要文件:main.py和scripts文件夹。scripts文件夹内

  • 一次int转换成unsigned long数值溢出问题2022-04-17 19:03:41

    在项目中遇到一个奇怪的宕机问题,后来查询定位发现是erlang底层数据溢出问题,用c模拟情况类似,当一个int类型的x值大于等于1<<25的时候,再左移6位会造成nt溢出,然后再强转成64位无符号整数。 test_int.c #include <stdio.h> int main(){ int a = 1; int x = (a<<25); int

  • CTFSHOW-Reverse-刷题记录2022-04-13 20:01:13

    re2 打开初步分析为32位程序,无壳,拖入IDA32分析 找到关键行47-50,分析得出各函数内部的基本作用如图所示 首先进入分析输入后的处理 可以很明显看出,是对输入的字符串进行处理后再操作,因此根据这个思路写出脚本,得到这里的密钥 #!/usr/bin/python #coding=utf-8 user = "DH~mqqvqxB^

  • C++虚函数调用简单分析2022-02-23 03:31:07

    C++代码如下: class parent_parent { public: virtual int print() const { return 1; } }; class sub : public parent_parent { public: int print() const override { return 0; } }; int main() { parent_parent* p = new sub;

  • c语言中inline函数的作用2022-01-25 12:03:30

    记录一下inline函数的作用 普通函数的调用过程 在eclipse里面创建工程,代码如下: #include <iostream> #include <vector> #include <cstring> #include <cassert> #include <algorithm> using namespace std; //__attribute__((always_inline)) inline int test(int x) int

  • BUUCTF_Re_SimpleRev2022-01-21 17:32:40

    主函数: unsigned __int64 Decry() { char v1; // [rsp+Fh] [rbp-51h] int v2; // [rsp+10h] [rbp-50h] int v3; // [rsp+14h] [rbp-4Ch] int i; // [rsp+18h] [rbp-48h] int v5; // [rsp+1Ch] [rbp-44h] char src[8]; // [rsp+20h] [rbp-40h] BYREF __int64 v7;

  • 攻防世界—RE—新手区—logmein2022-01-12 14:04:35

    exeinfo分析,64位, main函数: void __fastcall __noreturn main(int a1, char **a2, char **a3) { size_t v3; // rsi int i; // [rsp+3Ch] [rbp-54h] char s[36]; // [rsp+40h] [rbp-50h] BYREF int v6; // [rsp+64h] [rbp-2Ch] __int64 v7; // [rsp+68h] [rbp-28h]

  • ROP-ret2csu2022-01-09 16:32:38

    ret2csu原理 利用ret2csu的方法实现ROP。 __libc_csu_init proc near ; DATA XREF: _start+16↑o .text:0000000000400840 ; __unwind { .text:0000000000400840 push r15 .text:0000000000400842 push r14 .text:0000000000

  • Linux:ftrace: 为什么有些函数没有在available_filter_functions2022-01-04 21:32:57

    文章目录 例如:__run_hrtimer汇编 例如:__run_hrtimer 这个函数其实有被用到,在函数__hrtimer_run_queues 中,有调用__run_hrtimer 但是在available_filter_functions 文件中就是没有 <sbc2048-fwp-a:root>/sys/kernel/debug/tracing: # grep __run_hrtimer av* <sbc2048-fwp

  • 【图文】函数调用过程中栈的变化2021-12-30 08:34:45

    大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。 栈帧的结构 函数在调用的时候都是在栈空间上开辟一段空间以供函数使用,所以,我们先来了解一下通用栈帧的结构。

  • 图解CPU执行一段程序2021-12-20 14:33:33

    程序执行 从打印出 Hello World 开始,程序如何运行起来,大家都很清楚。那么底层如何执行的呢,让我们一探究竟。 long main(){ long a = 1; long b = 2; return a + b; } 来一段 C 语言作为例子, gcc -S 生成汇编代码,简化如下。 pushq %rbp movq %rsp, %rbp movq $1, -8

  • 2.4 OpenEuler中C语言中的函数调用测试2021-12-05 22:34:32

    2.4 OpenEuler中C语言中的函数调用测试 任务详情 在X86_64架构下实践2.4中的内容 通过GDB查看寄存器的内容,把教材中的图填入具体的值 把2.4的C代码在OpenEuler中重新实践一遍,绘制出ARM64的逻辑框图 任务一X86_64架构下实践2.4 操作环境: Ubuntu Kylin 2.4.1 code #include <stdi

  • PWN保护机制详解2021-11-29 18:01:09

    对pwn过程中遇到的保护机制做一下详解与归纳。 Stack Canaries 放一篇写的好的:PWN之Canary学习 - sarace - 博客园 (cnblogs.com) 简介 stack canaries取名自地下煤矿的金丝雀,能比矿工更快发现煤气泄露,有预警的作用。这个概念应用在栈保护上则是在初始化一个栈帧时在栈底设置一

  • 调用栈被破坏的手动恢复2021-11-26 15:30:00

    函数调用前言后序 一般来说,在未优化的情况下,函数的调用栈的前言和后续对应的指令都是固定的。 push %rbp mov %rsp,%rbp sub $10,%rsp #这里的立即数 10 表示函数需要的栈大小,与函数自身小关 ​ ​ leave # leave 等价于以下两条指令 #mov %rbp,%rsp #pop %rbp ret push %rbp 之

  • 汇编看指针2021-11-19 18:30:02

    前言 开发中经常使用指针访问变量修改变量值, 那么编译器是怎么翻译指针的 或者说指针在汇编层面到底是什么 mov 和 lea 指令 指针的分析离不开这两个指令,简单看下mov指令 mov指令 GNU汇编器输出AT&T汇编时为 mov 指令添加了一个维度,在其中必须声明要传送的数据元素的长度 因

  • CSAPP第4章家庭作业参考答案2021-10-12 20:03:07

    4.45 不正确 push %rsp的指令会将rsp减8之前的old value压栈 应该是如下代码: movq REG, -8(%rsp) sub $8, %rsp 4.46 不正确 应该改为 add $8, %rsp movq -8(%rsp), REG 4.47 #include<stdio.h> long int a[100] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; void bubble_b(long *dat

  • C&Golang函数调用过程详解(二)2021-10-09 14:58:40

    上篇文章聊到在main中执行了调用sum函数的call指令。 这时CPU跳到sum开始执行如下命令: 0x0000000000400526 <+0>:push %rbp 0x0000000000400527 <+1>:mov %rsp,%rbp 0x000000000040052a <+4>:mov %edi,-0x14(%rbp) 0x000000000040052d <+7>:mov %esi,-0x18(%r

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有