首页
社区
课程
招聘
[旧帖] [求助]关于kanxue老师<逆向基础知识学习>的问题. 0.00雪花
发表于: 2008-4-4 22:45 3299

[旧帖] [求助]关于kanxue老师<逆向基础知识学习>的问题. 0.00雪花

2008-4-4 22:45
3299
<<1.1.1 __stdcall调用约定>>
这一节里还有不懂得.下载的add.rar用OD打开后是这样.

00401000 >/$  6A 04         push    4
00401002  |.  6A 03           push    3
00401004  |.  E8 16000000   call    0040101F
.......
0040101F  /$  55               push    ebp
00401020  |.  8BEC            mov     ebp, esp
00401022  |.  83EC 04       sub     esp, 4
00401025  |.  8B45 0C       mov     eax, dword ptr [ebp+C]
00401028  |.  8B5D 08       mov     ebx, dword ptr [ebp+8]
0040102B  |.  895D FC       mov     dword ptr [ebp-4], ebx
0040102E  |.  0345 FC       add     eax, dword ptr [ebp-4]
00401031  |.  83C4 04       add     esp, 4
00401034  |.  5D                pop     ebp                              ;  0012FFF0
00401035  \.  C2 0800       retn    8


与这个图和解释有些出入,我可不可以这样理解add.rar堆栈参数的传递?如下:
00401000 >/$  6A 04         push    4                                         |  参数y
00401002  |.  6A 03           push    3                                         |  参数x
00401004  |.  E8 16000000   call    0040101F                          |  调用子程序[add(int x,int y)]
.......
0040101F  /$  55               push    ebp                                     |  保护现场原先的EBP指针
00401020  |.  8BEC            mov     ebp, esp                             |  设置新的EBP指针,指向栈顶
00401022  |.  83EC 04       sub     esp, 4                                  |  创建局部变量,在堆栈中分配些空间
00401025  |.  8B45 0C       mov     eax, dword ptr [ebp+C]      |  调用参数y
00401028  |.  8B5D 08       mov     ebx, dword ptr [ebp+8]      |  调用参数x
0040102B  |.  895D FC       mov     dword ptr [ebp-4], ebx       |  ?
0040102E  |.  0345 FC       add     eax, dword ptr [ebp-4]        |  ?
00401031  |.  83C4 04       add     esp, 4                                  |  释放局部变量占用的堆栈
00401034  |.  5D                pop     ebp                                      |  恢复现场的ebp指针

00401035  \.  C2 0800       retn    8                                          |  返回main()
---------------------------------------------------------------------------------------------------------

0040102B  |.  895D FC       mov     dword ptr [ebp-4], ebx       |  ?
0040102E  |.  0345 FC       add     eax, dword ptr [ebp-4]        |  ?
这两步是做什么用的了?请各位大侠指教..谢谢啦~~菜鸟一个,问题可能很弱,真的想好好学!教教我啦~~  

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
好像是 利用一个局部变量 计算两个参数的相加结果
2008-4-4 23:00
0
雪    币: 196
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
找到了,谢谢大家!!!
0040101F /$ 55 push ebp ; 保护现场原先的EBP指针
00401020 |. 8BEC mov ebp, esp ; 设置新的EBP指针,指向栈顶
00401022 |. 83EC 04 sub esp, 4 ; 分配局部变量所有空间
00401025 |. 8B45 0C mov eax, [ebp+C] ; 调用参数2
00401028 |. 8B5D 08 mov ebx, [ebp+8] ; 调用参数1
0040102B |. 895D FC mov [ebp-4] , ebx ; 参数1放局部变量里
0040102E |. 0345 FC add eax,[ebp-4] ; 参数2与局部变量相加
00401031 |. 83C4 04 add esp, 4 ; 释放局部变量所有空间
00401034 |. 5D pop ebp ; 恢复现场的ebp指针
00401035 \. C2 0800 retn 8

2008-4-4 23:05
0
雪    币: 196
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
好的,谢谢2楼的!!我找到了,上面有kanxue老师的正解.
2008-4-4 23:07
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
5
不必客气。。
2008-4-4 23:10
0
游客
登录 | 注册 方可回帖
返回
//