首页
社区
课程
招聘
[求助]NOP掉驱动文件后不能保存可执行文件EXE
发表于: 2009-3-11 16:43 3953

[求助]NOP掉驱动文件后不能保存可执行文件EXE

2009-3-11 16:43
3953
我软件两处释放相同的BEEP.SYS驱动文件,第一处CALL地方NOP搞定后能运行正常,,,
但调试跟随到第二处CALL的地方NOP掉后不能保存为EXE文件,只能保存DLL....

请问这样该怎么办呢?谢谢前辈指点.

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
说明你改掉的是DLL中的代码。

要找到exe中的调用这个DLL函数的代码,改那里就好了。

可以反复Ctrl+F9,直到返回地址位于EXE的地址范围当中,这个返回地址处的上一行的CALL指令就是你要改的地方。

还有,NOP掉时要注意堆栈。
2009-3-11 18:30
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
___________________________
说的很详细,非常感谢前辈的指点与提醒,..
我想请前辈详细说明一下,(NOP掉时要注意堆栈。)这句话的意思,
要注意堆栈的什么呢?  谢谢您..
还有,原来看雪是个这么好的学习平台,有很多高手肯为新手解答,以后在这学习了.
2009-3-12 11:06
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
就是所谓的“堆栈平衡”。

如果CALL的函数没有参数,或者是__cdecl约定的,那么把CALL指令直接换成NOP指令就可以了。

如果函数是__stdcall约定的,那么应该视参数个数,将原来的CALL指令换成add esp, XXX这样的指令。这里XXX就是压入堆栈的参数的以字节计算的大小,比如压入一个整型参数,那么就是add esp,4
2009-3-12 12:46
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢版主的热心指点,

思路很明了,只是我太菜了还没搞定,呵呵....我得再学习学习,再次谢谢版主....

还有就是,我一定想想法子搞定这个难关....如果版主有时间的话远程帮我看一下,我想也费不了多少时间.,,当然了,淡到金钱就变质了,但是付出也必需要有回报的,这是我的想法,如果有空帮我看看,买烟给帮忙者抽, 呵呵..
2009-3-13 21:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你保存的DLL文件如果不是系统DLL那么你可以保持,然后导入到EXE内部,就OK了。
2009-3-14 09:40
0
雪    币: 184
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
是系统DLL
2009-3-14 12:09
0
游客
登录 | 注册 方可回帖
返回
//