🌓

滴水逆向 01-28 C语言04_IF语句逆向分析上

全局变量、局部变量 内存图: 当然以上的是否可读写都是对于正向开发来讲的,逆向可以随意操作 全局变量: 只要是见到用立即数直接寻址的多半都是全局变量 局部变量: 局部变量不仅可以通过 ebp-? 来找,也可以通过栈顶加什么 esp+? 来找,所以看到这个形式不要惊慌,因为编译器的不同/不同的版本,寻找的方式可能会不同 函数参数的分析 分析一个程序,你肯...

阅读全文

滴水逆向 01-27 C语言03_数据类型_IF语句

课后作业 做的是有基础的那部分 有一个字符串是这样的:china中国verygood天朝nice,里面既含有中文又含有英文,请编写一个函数,能截取任意长度的字符串 n(n<=总长度) 123fn(5) = chinafn(6) = china中fn(8) = china中国v 此题涉及到字符存储所占字节大小的问题,英文字符占一字节,课上讲的中文字符...

阅读全文

滴水逆向 01-26 C语言02_数据类型

C语言是怎么变成汇编的 引言:定义一个函数,什么都不写什么都不做的时候,编译器和链接器就已经自动生成了一个框架 如果不想要它自动生成的这个,就可以使用裸函数 什么是裸函数 12void __declspec(naked) Function(){...} 裸函数调用时与普通函数无异,都是生成一个 call 指令,也就是会先把下一条指令...

阅读全文

滴水逆向 01-23 C语言

图省事安了个 xp 虚拟机,这样就可以使用跟课堂一样的古老环境了 VC6 相关操作 F7:编译并运行 F5:调试 shift+F5:结束调试 F9:设置断点 F10:step over F11:step in 打开寄存器窗口和内存窗口:view–debug windows registers:寄存器窗口(快捷键ALT+5) Memory:内存窗口(快捷键...

阅读全文

滴水逆向 01-22 堆栈图2

函数 计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它可以实现固定运算功能的同时还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理,所谓出口,就是指函数的计算结果,也称为返回值,在计算机求得之后,由此口带回给它的调用程序。 汇编中的函数: 函数的入口: 函数的...

阅读全文

滴水逆向 01-21 堆栈图1

课后作业 画出第二个函数的堆栈图 堆栈图: 画出第三个函数的堆栈图 堆栈图: 画出第四个函数的堆栈图 堆栈图:

阅读全文

滴水逆向 01-20 JCC

JMP 只修改 EIP,其余什么也不做 1MOV EIP, 寄存器/立即数 ;简写为:JMP 寄存器/立即数 CALL 修改 EIP,ESP 也会 -4,把下一句要执行的地址压栈 12PUSH 地址BMOV EIP, 地址A/寄存器 ;简写为:CALL 地址A/寄存器 RETN 修改 EIP,ESP + 4,弹出栈顶返回地址赋给 EIP。类...

阅读全文

滴水逆向 01-19 标志寄存器

标志寄存器 在哪看?OD 已经把 32 位拆分好列出来了,C就是表示CF,P就表示PF…最下面那个 EFL 就是拆开前的样子,需要自己拆的时候就把这个 16 进制数展开成 32 位二进制就行 记住这几个寄存器的位置和名称: 进位标志 CF(Carry Flag):如果运算结果的最高位产生了一个进位或借位,那么,其值为 1,否则 0 研究进位时,要先...

阅读全文

滴水逆向 01-16 内存地址_堆栈

内存地址 反汇编窗口和寄存器窗口数据存储都是从高位到低位,数据区则是由低位到高位 寻址公式一:[立即数] 读取内存的值: 12MOV EAX, DWORD PTR DS:[0x13FFC4]MOV EAX, DWORD PTR DS:[0x13FFC8] 向内存中写入数据: 12MOV DWORD PTR DS:[0x13FFC4], eaxMOV...

阅读全文

滴水逆向 01-15 通用寄存器_内存读写

通用寄存器 32 位通用寄存器的指定用途如下: 寄存器 主要用途 编号 存储数据的范围 EAX 累加器 0 0 - 0xFFFFFFFF ECX 计数 1 0 - 0xFFFFFFFF EDX I/O指针 2 0 - 0xFFFFFFFF EBX DS段的数据指针 3 0 - 0xFFFFFFFF ESP 堆栈指针 4 0 - ...

阅读全文