首页
社区
课程
招聘
[求助]被调试进程某函数不能正确返回到调用它的地址
发表于: 2008-10-21 14:59 4785

[求助]被调试进程某函数不能正确返回到调用它的地址

2008-10-21 14:59
4785
该程序被加了未知壳,可以用OD调试,但对某一子程序下断时,返回点竟然不是调用该子程序的地方,而是返回到一CALL后面,该CALL里面某一处地址才是调用该子程序的地方,请问该如何来调试该程序,好正确找到调用点呢?谢谢!

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
是变形的跳转指令而已。

就是push加retn指令实现jmp指令的功能。

如果讲基础,要从retn指令的本质说起

retn指令本质相当于pop eip

仅此而已。请复习基础知识。函数的调用路径是保存堆栈中的。

如果有意地“非正确”使用堆栈(根据栈的定义,只有入栈和出栈两种基本操作),就可以控制函数
执行流程。

常见于反调试的加花指令

另外宝兰的编译器喜欢生成这样的代码。

你注意一下在retn的上面不太远(如果是有意思扰乱的话可能非常远)的地方的类似于

push    app.0043ee2b

这样的指令,这就是retn指令要跳转的地方。

再次强调基础知识。
2008-10-21 19:15
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼上的。
2008-10-21 20:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢,了解了。
2008-12-4 20:48
0
游客
登录 | 注册 方可回帖
返回
//