反汇编逆向实例_while语句反汇编
2014-08-01 16:01
155 查看
反汇编逆向实例_while语句反汇编
by:比方逆向反汇编第四章, while语句反汇编
示例代码:
#include"stdio.h" int function(int a,int b) { int c=a+b; int i=0; while(i<50) { c=c+i; } return c; } void main() { function(1,2); }
反汇编代码:
#include "stdio.h" int function(int a,int b) {
00AE1A40 push ebp
00AE1A41 mov ebp,esp
00AE1A43 sub esp,0D8h
00AE1A49 push ebx
00AE1A4A push esi
00AE1A4B push edi
00AE1A4C lea edi,[ebp-0D8h]
00AE1A52 mov ecx,36h
00AE1A57 mov eax,0CCCCCCCCh
00AE1A5C rep stos dword ptr es:[edi] ;开始分配36个4字节空间,定位到edi,edi是来自[ebp-od8h],定位到缓冲区头部并初始化为CC,
int c=a+b;
00AE1A5E mov eax,dword ptr [a] ; 变量A放入到eax,
00AE1A61 add eax,dword ptr ; 变量B加上个变量A ,结果放入到eax
[b]00AE1A64 mov dword ptr [c],eax ; 变量C等于变量A+变量B,等于 C = A+B;
int i=0;
00AE1A67 mov dword ptr [i],0 ; 变量D等于0
while(i<50)
00AE1A6E cmp dword ptr [i],32h ;比较变量D是否大于等于0x32h(16进制)
00AE1A72 jge function+3Fh (0AE1A7Fh) ;如果不大于等于,则指向下面语句,否则跳0x00AE1A7F
{ c=c+i;
00AE1A74 mov eax,dword ptr [c] ;c = c+i
00AE1A77 add eax,dword ptr [i]
00AE1A7A mov dword ptr [c],eax
}
00AE1A7D jmp function+2Eh (0AE1A6Eh) 如果这里是往下跳就可以还原成if,else语句
00AE1A7F mov eax,dword ptr [c] ;把c的结果放到eax中,eax是函数返回值,所以结果就是return c;
}
00AE1A82 pop edi
00AE1A83 pop esi
00AE1A84 pop ebx
00AE1A85 mov esp,ebp
00AE1A87 pop ebp
00AE1A88 ret
该死的排版,麻烦死了
相关文章推荐
- 反汇编逆向实例_ifelse语句反汇编
- 反汇编逆向实例_struct 语句反汇编
- 反汇编逆向实例_dowhile语句反汇编
- 反汇编逆向实例_swirch case语句反汇编
- 反汇编逆向实例_unoin语句反汇编
- [iOS逆向工程] 在汇编语言调试中获取当前实例句柄
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- sql中while语句多层循环实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell流程控制语句实例讲解(if、for、while、case语句实例)
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- C#中while语句的用法与实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- SQL 循环语句 while 介绍 实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例