汇编逆向(一)
写这个纯属就是自己记录下自己的学习经历,没有其他的意思。int add(int a,int b)
{
return a+b;
}
int main()
{
int a=3,b=4,c=0;
c=add(a,b);
printf("%d",c);
return 0;
}
上面的功能只是一个单纯的加法函数,我们要来逆他
载入OD,printf处下断
00371010 >/[ DISCUZ_CODE_2 ]nbsp; 55 push ebp
00371011|.8BEC mov ebp, esp
00371013|.83EC 0C sub esp, 0xC
00371016|.C745 FC 03000>mov dword ptr , 0x3 ;int a=3
0037101D|.C745 F8 04000>mov dword ptr , 0x4 ;int b=4
00371024|.C745 F4 00000>mov dword ptr , 0x0 ;int c=0
0037102B|.8B45 F8 mov eax, dword ptr
0037102E|.50 push eax ;压 b
0037102F|.8B4D FC mov ecx, dword ptr
00371032|.51 push ecx ;压 a
00371033|.E8 C8FFFFFF call testtest.add ;加法call
00371038|.83C4 08 add esp, 0x8 ;堆栈平衡
0037103B|.8945 F4 mov dword ptr , eax
0037103E|.8B55 F4 mov edx, dword ptr
00371041|.52 push edx ; /printf的第二个参数 字符串
00371042|.68 F4203700 push testtest.003720F4 ; |字符串类型
00371047|.FF15 A0203700 call dword ptr [<&MSVCR100.printf>] ; \printf
0037104D|.83C4 08 add esp, 0x8
00371050|.33C0 xor eax, eax
00371052|.8BE5 mov esp, ebp
00371054|.5D pop ebp
00371055\.C3 retn
进入加法call
00371000 >/[ DISCUZ_CODE_3 ]nbsp; 55 push ebp
00371001|.8BEC mov ebp, esp
00371003|.8B45 08 mov eax, dword ptr ;第一个参数,也就是a
00371006|.0345 0C add eax, dword ptr ;a=a+b
00371009|.5D pop ebp
0037100A\.C3 retn ;返回值为eax
今天的比较简单,到此结束
逆向汇编程序?
这是找算法么{:5_117:}
520Kelly 发表于 2014-12-25 00:14
逆向汇编程序?
为算法做铺垫
写下学习经历挺好的赞++++
不错,学习了,谢谢楼主!
、挖槽!牛逼!前来学习!加膜拜!{:5_120:}
进来学习了呀!谢谢分享……
我想知道 如果没有上面的例程楼主是怎么知道图片中的箭头所指就是 a=3b=4等等
支持原创作品