首页
社区
课程
招聘
[求助]逆向mfc程序的小问题
发表于: 2016-7-26 09:15 5042

[求助]逆向mfc程序的小问题

2016-7-26 09:15
5042
PUSH EBP
MOV EBP,ESP
PUSH ECX
MOV DWORD PTR SS:[EBP-4],ECX
MOV ESP,EBP
POP EBP
RETN 4

上面程序是不是什么也没做啊, 有什么意义呢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1721
活跃值: (1560)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ebp压栈,略等于 mov ebp,ecx
2016-7-26 09:51
0
雪    币: 81
活跃值: (100)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
是什么都没做,有几种可能,比如说这里有DEBUG的代码,发行版中就变成空函数了
2016-7-26 12:31
0
雪    币: 39
活跃值: (2881)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你这段代码大概对应的是以下源代码:
void WINAPI SomeClass::f(int SomeArg)
{
   SomeClass *p;
   p = this;
}
2016-7-26 12:53
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
貌似还有个push ecx,这个好奇怪
2016-7-27 09:33
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
逆向高手啊!
2016-7-27 11:52
0
雪    币: 81
活跃值: (100)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
这个push没有对应的pop的,就相当于esp - 4,开局部变量用的栈空间
变成push的理由应该是代码优化的结果
2016-7-27 13:09
0
雪    币: 39
活跃值: (2881)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
正解。
相当于sub esp, 4;用来在堆栈中开辟局部变量空间。
2016-7-27 16:02
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
是一个挺傻的优化,把ecx push一下,但是又没有恢复,后面直接使用ecx
2016-7-28 13:47
0
雪    币: 81
活跃值: (100)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
push ecx的机器码长度比sub esp, 4要短
2016-7-28 15:17
0
游客
登录 | 注册 方可回帖
返回
//