PE感染的方式,有没有我想的这种?

dibotiger 2011-03-07 04:09:49
1.通用型:增加节点, 修改调整PE入口,新增加节点的内容就是Loadlibary某个DLL的SHELLCODE代码.
如:http://blog.csdn.net/wangningyu/archive/2009/12/20/5044864.aspx

2.高级型:修改IAT表.不够通用.因为不是所有的PE的IAT表都够你修改.




3.就是我想知道的,能否把某个DLL的代码(非shellcode类型),直接写入被感染对象的某个新节点,
并使其成为其中的自我加载的一部分.而不再需要外部的DLL来支持,当然,这么做必然需要改变文件大小.
...全文
143 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lactoferrin 2011-03-08
  • 打赏
  • 举报
回复
熊猫烧香是怎么把自己的程序删除的
dingshaofengbinbin 2011-03-07
  • 打赏
  • 举报
回复
好好学习一下加壳脱壳这种东西就很清楚了!!
sunlin7 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 dibotiger 的回复:]
3.就是我想知道的,能否把某个DLL的代码(非shellcode类型),直接写入被感染对象的某个新节点,
并使其成为其中的自我加载的一部分.而不再需要外部的DLL来支持,当然,这么做必然需要改变文件大小.
[/Quote]
不使用shellcode几乎不可能,除非dll代码不引用或者引用很少量的Api. 因为导入表要大小是有限的,在现在导入表里面插入新加的dll的导入函数,就非常困难--如果楼主说的这种办法简单易行的话,早就有人搞过了.
maqun1105 2011-03-07
  • 打赏
  • 举报
回复
修改目标exe导入表,添加上你想加载的dll,这样就可以随之运行而运行了~
Lactoferrin 2011-03-07
  • 打赏
  • 举报
回复
我实现过直接把代码写入新的section然后修改pe入口点的程序,植入的代码通过peb得到api地址,用纯汇编做的
但这个类似的所有方法对于有数字签名检验的程序都无效,比如qq.exe
如果想对其有效还得在程序运行后还原pe,或者用其他方法欺骗
zhanshen2891 2011-03-07
  • 打赏
  • 举报
回复
那得看是什么代码,我觉得

你给EXE增加一个区块,把dll的代码写到里面肯定是可以的,重定位的部分就改为相对于EXE的基址就行了,不过关键是你引用的第三方dll,包括API所在的dll,这个不好搞啊。

如果你使用的API很少,是那些几乎所有PE都需要加载的估计就问题不大了。要么就尽量不使用API,必须得使用的就使用native api或许可行。
PE文件的感染C++源代码 PE文件规定了可执行文件的格式,凡是符合此格式的文件都能在windows系统上运行。PE文件的格式暂且不谈,说一些感染PE文件的几种途径。 导入表感染。这个涉及比较复杂的操作,首先,要自行写一个dll文件,提供程序中对原dll引用的所有函数,然后增加一个节区,修改ImportAddress中的地址,使其指向新增加的节,这样,程序加载后,只要调用相关函数,就会先执行自己写的dll,执行完后,再跳转到原代码人口处执行。 导入地址感染。这个相对简单些,在PE文件头部分,IMAGE_OPTION_HEADER中有个ImportAddress目录,这个目录中只是一些jmp指令,我们可以修改jmp指令跳转的地址,使其指向在PE文件中我们新增加的代码。这需要在原PE文件中增加代码,PE文件在硬盘上默认200H字节对齐,一般存有空隙,如果代码量小,不用增加新节就可以插入代码。 修改入口函数地址。这个是最省事的办法,在原PE文件中新增加一个节,计算新节的RVA,然后修改入口代码,使其指向新增加的节。当然,如果.text节空隙足够大的话,不用添加新节也可以。 修改快捷方式文件。如果PE文件存在快捷方式,可以先行感染快捷方式,使快捷方式指向自己写的程序,自写程序启动后,再执行真正的PE文件。这种做法比较猥琐,而且不可靠。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧