2026-05-31
返回值的传递
char 类型的返回值:用 al 存
short 类型的返回值:用 ax 存
int 类型的返回值:用 eax 存
宽度为 64 位的返回值数据类型要怎么存储?见作业1
参数传递
本机尺寸:如果本机是 32 位的,那么对 32 位的数据支持最好,如果是 64 位的,那么对 64 位的支持最好。编译器也遵守了这个规则:char 类型或者 s...
阅读全文
2026-05-26
被坑了哇,看到爱达人官网那里有一个3块钱的练习代码下载,还以为是刚开始提到的那个有基础的人觉得无聊的话就去逆的那个程序,买了下载了一看只是一个很普通的交换排序,不知道是干啥用的,是说的那个无聊就去逆的吗?不管了反正课也直接拉进度条听完了
do…while语句
语句及对应反汇编示例:
总结:
根据条件跳转指令所跳转到的地址,可以得到循环语句块的起始地址
...
阅读全文
2026-05-22
变量的声明
声明变量就是告诉计算机,我要用一块内存,你给我留着,宽度和存储格式有数据类型决定。
计算机什么时候把这块内存给你,取决于变量的作用范围,如果是全局变量,在程序编译完就已经分配了空间,如果是局部变量,只有所在的程序被调用的时候,才会分配空间。
全局变量如果不赋初始值,默认是0,但局部变量在使用前一定要赋初值
类型转换
MOVSX先符号扩展,...
阅读全文
2026-05-14
IF…ELSE…语句的反汇编判断
第一个 JCC 跳转到的地址前面有一个 jmp(并且 jump 是往下跳的),就可以确定是 if…else… 语句
案例分析 demo:
IF…ELSE IF…ELSE IF…多分支语句的反汇编判断
案例分析 demo:
课后作业
If…else
还原成 C :
123456789101112131415161...
阅读全文
2026-05-11
全局变量、局部变量
内存图:
当然以上的是否可读写都是对于正向开发来讲的,逆向可以随意操作
全局变量:
只要是见到用立即数直接寻址的多半都是全局变量
局部变量:
局部变量不仅可以通过 ebp-? 来找,也可以通过栈顶加什么 esp+? 来找,所以看到这个形式不要惊慌,因为编译器的不同/不同的版本,寻找的方式可能会不同
函数参数的分析
分析一个程序,你肯...
阅读全文
2026-05-06
课后作业
做的是有基础的那部分
有一个字符串是这样的:china中国verygood天朝nice,里面既含有中文又含有英文,请编写一个函数,能截取任意长度的字符串 n(n<=总长度)
123fn(5) = chinafn(6) = china中fn(8) = china中国v
此题涉及到字符存储所占字节大小的问题,英文字符占一字节,课上讲的中文字符...
阅读全文
2026-04-23
C语言是怎么变成汇编的
引言:定义一个函数,什么都不写什么都不做的时候,编译器和链接器就已经自动生成了一个框架
如果不想要它自动生成的这个,就可以使用裸函数
什么是裸函数
12void __declspec(naked) Function(){...}
裸函数调用时与普通函数无异,都是生成一个 call 指令,也就是会先把下一条指令...
阅读全文
2026-04-14
图省事安了个 xp 虚拟机,这样就可以使用跟课堂一样的古老环境了
VC6 相关操作
F7:编译并运行
F5:调试
shift+F5:结束调试
F9:设置断点
F10:step over
F11:step in
打开寄存器窗口和内存窗口:view–debug windows
registers:寄存器窗口(快捷键ALT+5)
Memory:内存窗口(快捷键...
阅读全文
2026-04-14
函数
计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它可以实现固定运算功能的同时还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序,供计算机处理,所谓出口,就是指函数的计算结果,也称为返回值,在计算机求得之后,由此口带回给它的调用程序。
汇编中的函数:
函数的入口:
函数的...
阅读全文
2026-04-14
课后作业
画出第二个函数的堆栈图
堆栈图:
画出第三个函数的堆栈图
堆栈图:
画出第四个函数的堆栈图
堆栈图:
阅读全文
1 2 下一页