打印

[原创] 通用加花免杀方案

通用加花免杀方案

我以windows自带的记事本程序为例,介绍基本的加花方法。
由于windows自带的记事本在块表后面紧跟着Bound Import数据,增加区块时会提示"PE空间不足"。
在这种情况下就需要清除Bound Import结构。大多数程序都没有Bound Import结构,除了少数windows自带的程序。

下面简单介绍一下清除Bound Import结构的方法:
1.用Stud_PE打开notepad.exe按照pic1的标记顺序依次点击.
观察"(3)",文件偏移0x1B0处被选中的数据是 50 02 00 00 D0 00 00 00 八个字节.
前4字节表示文件偏移地址0x00000250,后面4字节0x000000D0表示数据的长度.记好这8字节的数据
2.打开16进制编辑器,我用的是Hex Workshop,打开notepad.exe.
来到文件偏移0x1B0处正好是50 02 00 00 D0 00 00 00 这8个字节.
将这个8字节全部填充为0.修改好后如图pic2
3.再来到文件偏移地址0x00000250,选取0x000000D0长度的数据.
0x250+0xD0=0x320,选取数据从0x250开始到0x320结束.如图pic3,全部填充为0.
填充好后保存文件.保存好后再用Stud_PE查看notepad.exe的Bound Import结构,如图pic4已经清除成功了.
我们来运行一下notepad.exe,看有没有破坏文件.OK,运行程序未出现任何异常.说明修改成功.

清除Bound Import结构,现在增加区块就不会出现"PE空间不足"的提示了.
运行ZeroAdd.单击"Pack a file"按钮打开刚刚修改好的notepad.exe,输入区块名".hdh",
增加的字节数为0X1000.单击"Add new section!"就可以增加一个新块.如图pic5
用PEID查看一下notepad.exe,如图pic6可以看出已经成功增加了一个区块,区块名是".hdh",相对虚拟偏移是0x13000.

区块添加好了,那我们下面要做的就是向区块中添加花指令了.由于花指令尾部需要跳转到真正的入口点,
先查看一下notepad.exe真正的入口点是0x0000739D,镜象基址是0x01000000,这两个值很重要。如图pic7

接着用OllyDbg打开notepad.exe。OllyDbg停在下面代码处
0100739D > $  6A 70         push    70    ;停在这里
0100739F   .  68 98180001   push    01001898
010073A4   .  E8 BF010000   call    01007568
010073A9   .  33DB          xor     ebx, ebx
010073AB   .  53            push    ebx                              ; /pModule => NULL

0x0100739D 这个就是入口点的内存地址,记下它。是怎么得来的呢?
是用入口点的偏移地址0x0000739D加上镜象基址0x01000000得来的。
刚刚添加的区块.hdh的相对虚拟偏移是0x13000,在图pic6中可看到。
相对虚拟偏移0x13000加上镜象基址0x01000000得到
0x01013000,这个就是.hdh区块在内存中的地址了。
在OllyDbg里按CTRL+G 输入地址0x01013000来到.hdh区块。。。可以看到里面是一片全0的空间,
花指令就写在这里面。
我在下面就用这段花指令作试范。
【深层】伪装 PEtite 2.2 -> Ian Luck 汇编代码:
============================
伪装代码部分:
============================
mov eax,0040E000
push 004153F3
push dword ptr fs:[0]
mov dword ptr fs:[0],esp
pushfw
pushad
push eax
xor ebx,ebx
pop eax
popad
popfw
pop dword ptr fs:[0]
pop eax
jmp XXXXXXXX '执行到程序的原有OEP
============================
这段花指令是从网上找来的,网上遍地都是花指令,以后免杀就不用愁了,
你可以找自己感兴趣的花指令。

花指令添加好后,如图pic8,单击鼠标右键“复制到可执行文件”,保存即可。
花指令虽然添加好了,但是入口点依然是0x0100739D ,此时,
需要把入口指向我们刚刚输入的花指令地址就可以让花指令先运行。
修改入口点我用的是LordPE.EXE。用LordPE.EXE载入notepad.exe,
将其入口点修改为0x13000,在图pic8中可以看到花指令
在内存中的起始地址是0x01013000,用0x01013000减去镜象基址0x01000000得到0x13000。 如图pic9。
保存好后,再次用PEID查壳。显示如图pic10,入口点变成了我们刚输入的地址。EP段也变成了我们的区块名。
这个刚刚是Microsoft Visual C++ 7.0 Method2 [调试],此时变成了PEtite 2.x [Level 1/9] -> Ian Luck 。
说明加花成功。运行程序也没遇到任何异常。

附件

pic1.JPG (109.13 KB)

2007-5-20 14:06

pic1.JPG

pic2.JPG (4.3 KB)

2007-5-20 14:06

pic2.JPG

pic3.JPG (28.61 KB)

2007-5-20 14:06

pic3.JPG

pic4.JPG (4.83 KB)

2007-5-20 14:06

pic4.JPG

pic5.JPG (21.11 KB)

2007-5-20 14:06

pic5.JPG

pic6.JPG (15.91 KB)

2007-5-20 14:06

pic6.JPG

pic7.JPG (42.8 KB)

2007-5-20 14:06

pic7.JPG

pic8.JPG (21.83 KB)

2007-5-20 14:06

pic8.JPG

pic9.JPG (29.46 KB)

2007-5-20 14:06

pic9.JPG

pic10.JPG (15.09 KB)

2007-5-20 14:06

pic10.JPG

TOP

好文章,学习ING
`````````
QQ458397502~学习VB,兼做免杀。北京土著。欢迎MM拜访~~
好像很复杂``

  总觉得加花```没什么用```~~

都过不了``

TOP

Processed in 0.060817 second(s), 6 queries, Gzip enabled