社区
汇编语言
帖子详情
关于向PE文件插入代码
lmxd70
2008-12-10 09:56:31
罗云彬的教程上有一个在PE文件中插入代码的例子,可是当向一些PE文件中插入的时候显示正确插入了(这个程序只是向目标程序的代码节中插入,如果没有空间就会退出,如果成功则创建一个新文件,其中就包含了插入的代码),但新生成的那个文件不正确,反编译后里面只有一些信息,没有代码。我看了看,好像是目标程序有资源文件的时候能插入成功,没有资源文件就不行。这是怎么回事?
...全文
359
7
打赏
收藏
关于向PE文件插入代码
罗云彬的教程上有一个在PE文件中插入代码的例子,可是当向一些PE文件中插入的时候显示正确插入了(这个程序只是向目标程序的代码节中插入,如果没有空间就会退出,如果成功则创建一个新文件,其中就包含了插入的代码),但新生成的那个文件不正确,反编译后里面只有一些信息,没有代码。我看了看,好像是目标程序有资源文件的时候能插入成功,没有资源文件就不行。这是怎么回事?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lmxd70
2008-12-11
打赏
举报
回复
已经发了,多谢~
killbug2004
2008-12-11
打赏
举报
回复
要不把代码和程序发到我邮箱killbug2004@gmail.com看看,这种情况很难判断
lmxd70
2008-12-11
打赏
举报
回复
先谢谢各位热心帮助,呵呵
不过killbug2004说有壳,但是我选的目标程序就是书中原来的例子,比如第一个窗口程序,没有资源,而且我都是用masmplus编译的,应该不存在壳的情况。
killbug2004
2008-12-11
打赏
举报
回复
插入代码时先判断是否有空间在pe头中插入节表,有空间插入节表就添加节表并将代码写入新添加的节中
没有空间添加节表就会判断代码节末尾是否存在为零的空间来插入代码,不过程序有个问题是,对待常规程序,也就是由编译器生成的程序应该没什么问题,而对待如加过壳的程序就可能会出错。
原因:因为这里对代码节的判断是依据节是否具有IMAGE_SCN_MEM_EXECUTE可执行的属性,把第一个拥有IMAGE_SCN_MEM_EXECUTE属性的节就认定为代码节,对于处理过的程序采用这种方法是不可靠的,因为有些压缩壳会修改程序的节最初的属性,比如压缩了资源,在壳的loader中对资源节进行解压,这时为了方便直接将所有节的属性都修改为可读可写可执行,而导致这个程序判断代码节时出错。
lmxd70
2008-12-11
打赏
举报
回复
哦,是这样啊,明白了
谢谢!
以后还要多多学习~~
xiaopoy
2008-12-11
打赏
举报
回复
罗云逼的?
自己猜测,他该是在入口点hook了,并把插入的code写入修改了属性的资源段里面,没有资源段时无处可写了,自然是错误了.
反编译后是有code的,没有看到而已,切到原程序的入口点处看看.
killbug2004
2008-12-11
打赏
举报
回复
firstwindow.exe最后一个节.data是为未初始化数据提供空间的节,故PE磁盘文件中该节不包含数据,节的Raw大小和Raw偏移均为0,而在.data节后面再插入一个节,程序里面要使用这两个数据来计算新添加节Raw的大小和Raw文件偏移,得出的结果都出错了,插入的新节Raw的偏移成了0,Raw大小为插入代码的大小,这样插入节的代码写到了PE文件头的位置,程序根据插入节代码结束的位置设置新文件的长度,故此时新文件的长度变成的代码节长度,最后写入更新的文件头就成了最后看到的结果,只有头没有代码
PE
头的应用---
插入
代码
到EXE或DLL
文件
中
本文介绍了一种在
PE
文件
中
插入
代码
的方法,通过修改
PE
文件
结构并建立新的输入表,实现
代码
的动态加载与执行。适用于EXE和DLL
文件
。
PE
头的应用---
插入
代码
到EXE或DLL
文件
中(DELPHI版本)
本文介绍了一种在
PE
文件
(包括EXE和DLL
文件
)中
插入
代码
的技术,并提供了Delphi实现示例。通过该技术,可以在目标程序启动时显示一个对话框,之后继续正常执行程序。文中详细解释了
PE
文件
结构、
插入
代码
的原理及具体实现。
java程序是否有有
pe
头吗_
PE
头的应用---
插入
代码
到EXE或DLL
文件
中
本文深入探讨了
PE
文件
的内部结构,并介绍了一种用于动态加载和执行
代码
的技术。该技术通过修改
PE
文件
的各个段,实现了动态库的加载与输入表的更新,确保了
代码
的高效执行。
PE
线程附加
本文介绍了一种用于在
PE
文件
中
插入
额外
代码
的方法,该方法能够在
PE
文件
的空隙处
插入
代码
,若空间不足,则通过延长最后一节来实现。此外,还提供了一份源
代码
示例,展示了如何修改
PE
文件
以加载指定的DLL。
深入剖析
PE
文件
本文详细介绍了
PE
文件
的基本结构、
PE
头和各部分的详细解析,包括DOS头、
PE
头、Section表、输出Section和输入Section,并阐述了Windows加载器的工作流程。此外,文章还讲解了如何在
PE
文件
中
插入
代码
的方法,以及如何增加执行
文件
的输入表项目,为深入理解和操作
PE
文件
提供了全面指导。
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章