本文将使用IDA分析C语言中循环结构(do while,while,for)在反汇编中的特征
目录
测试代码
- #include <stdio.h>
- int main()
- {
- int sum = 0;
- int i = 0;
- do
- {
- sum += i;
- i++;
- } while (i < 2);
- return 0;
- }
分析核心反汇编

- _loop:
- XXX
- XXX
- XXX
- cmp XXX, XXX
- JCC _loop
测试代码
- #include <stdio.h>
- int main()
- {
- int sum = 0;
- int i = 0;
- while (i < 2)
- {
- sum += i;
- i++;
- }
- return 0;
- }
分析核心反汇编代码

特征总结
- _loop:
- CMP XXX,XXX
- JCC _end
- ......
- ......
- jmp _loop
- _end:
测试代码
- #include <stdio.h>
- int main()
- {
- int sum = 0;
- for (int i = 0; i < 2; i++)
- {
- sum += i;
- }
- return 0;
- }
分析核心反汇编

- _init:
- 初始化块
- int i=0;
- JMP _loop
- _start:
- i++;(步长块)
- _loop:
- CMP XXX
- JCC _end
- ...执行循环体....