-
-
刚刚读懂了win32汇编书中的增加pe功能部分,增加功能后的程序却不能调试了
-
发表于:
2007-4-19 01:42
4332
-
刚刚读懂了win32汇编书中的增加pe功能部分,增加功能后的程序却不能调试了
终于读懂了win32汇编一书中关于增加pe功能的那部门,书中提供的增加pe功能的程序每行都自己加了注释。
先建立了一个简单的hello.exe,就是只弹出一个对话框,点确定,退出程序。
使用书中提供的程序,给hello.exe增加一个功能,首先弹出二选对话框,点是,执行原hello.exe的功能。点否退出程序。增加功能大概流程如下
1、新增了一个节表(所有关于节的有关数据正确设置)
2、所有PeHeader正确设置
3、文件末尾新增节数据,并正确作了FileAlign
4、修改PeHeader中的入口点为新增代码入口点。新增代码末尾使用 0e9h 构造的 jmp near指令跳转到原入口点
至此,功能添加完毕。新程序名为hello_new.exe,也可以正常实现目标功能。
但是用od却无法调试了,打开hello_new.exe,提示用模块'hello'入口点超出代码范围。字符串参考查不出任何字符。F9也无法运行程序。
既然程序可以正常运行,说明各个有关PE文件描述的结构正确,某则应该报不是有效的win32程序才对。而且代码也正确,否则不可能实现需要的功能。同时也说明程序的入口点也正常,否则还是程序不可能执行,但为什么不能调试,还说没有入口点呢?
[课程]Linux pwn 探索篇!