WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 2171查看
  • 0回复

主题

好友

1936

积分

金牌会员

发表于 2010-1-9 10:08:59 |显示全部楼层
几天前看了个程序伪装的教程,用的就是以壳制壳的方法,我想这种方法拿来给木马做免杀可不可以,试了下效果不错,对于杀软表面查杀很有效,现在跟大叫分享下。

        可能要用这个方法的朋友 要有一个的脱壳基础 ,不用很深 ,只要会ESP定律即可。

         ESP 定律:就是加载程序后 F8单步运行 第一个变化的 ESP 值,右击寄存器上 ESP 在转存中跟随,在内存地址上 选中前四个,右击,断点,硬件访问,word F9,中断,....返回。,总之很简单,不会的可以到网上找教程。

        具体方法

1.为你的木马无壳 加一个兼容性较好的压缩壳 ,例如UPX(下面以他来演示)这些壳大家接触的也比较多, 脱壳也相对比较简单。

2. 加完壳 就进行脱壳 用OD载入 ,记下壳的入口点 X1 ,然后用ESP定律 跳到一个地址X2 ( 这个地址再F8就直接到达程序真正的OEP ), 记下这个X2   , 然后F8到达真正的OEP ,这里给出几个可以用ESP定律脱壳的方法

   Aspcak 方法:
ESP+6175(Sb) POPAD JMP
UPX 方法:
S 0000 The First JMP
变种
ESP+S (60E9)
0040EA0E 60 PUSHAD
0040EA0F - E9 B826FFFF JMP chap702.004010CC

   PECompact 1.68 - 1.84
ESP
Or 注意 第一个 PUSH XXXX XXXX+基址(400000)=EOP


EZIP 1.0 方法:
ESP


    JDPack 1.x / JDProtect 0.9
ESP+S(6150)
0040E3F8 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
0040E3FC 61 POPAD
0040E3FD 50 PUSH EAX
0040E3FE C3 RETN
0040E3FF 23E8 AND EBP,EAX
   PE Pack 1.0
ESP+S (61ff)
0040D26F 61 POPAD
0040D270 FFE0 JMP EAX


     WWPack32 1.x
ESP


    PEDiminisher 0.1
ESP+S(FFE0) or S(JMP EAX)
0041708D 5D POP EBP
0041708E 5F POP EDI
0041708F 5E POP ESI
00417090 5A POP EDX
00417091 59 POP ECX
00417092 5B POP EBX
00417093 - FFE0 JMP EAX
DxPACK V0.86
ESP+S(JMP EAX or 61ffe0)
0040D163 61 POPAD
0040D164 - FFE0 JMP EAX


     PKLITE32 1.1
F8 5 次来到 EOP


   32Lite 0.03a
ESP 往下找到
PUSH EAX
50c3 or PUSH EAX
003780F4 50 PUSH EAX
003780F5 C3 RETN
来到
0041C53C FF96 84B50100 CALL DWORD PTR DS:[ESI+1B584]
0041C542 61 POPAD
0041C543 - E9 0848FFFF JMP QEDITOR.00410D50
注意:先用 LoadPE 转存 Olldbg 加载的那个加壳文件,退出,运行加壳后的文件,RecImport 修正 EOP 修复抓取文件到 DUMP 的那个文件。

   VGCrypt PE Encryptor V0.75
ESP 安 F9(断点开始),地址-1=EOP

    PC Shrinker 0.71
ESP
00142BA8 BA CC104000 MOV EDX,4010CC
00142BAD FFE2 JMP EDX
    Petite2.2
1. D 12ffa0
3 下 F9
来到 EOP=地址-1
2. ESP 两下 同上


      EXE Stealth2.72
ESP+S()
0040D49F 8B9D B62F4000 MOV EBX,DWORD PTR SS:[EBP+402FB6]
0040D4A5 039D BA2F4000 ADD EBX,DWORD PTR SS:[EBP+402FBA]
将堆栈中值10cc+400000=4010cc 得出记事本的Oep. 加壳软件的oep.
0040D4AB C1CB 07 ROR EBX,7

记住这个程序真正的OEP地址   X3    ,右击选择OD脱壳   ,保存脱壳文件为 M   , 此时OD 不要关掉 。

3.修复文件 用脱壳修复工具_Import REConstructor   在OEP处填上 X3   点击自动搜索IAP   点击获取输入表 然后在OEP处再填写上 X1    抓取文件 M, 出现修复后的文件M1    此时文件已经脱完壳了 用PEID查壳 文件还是UPX 其实文件早已经脱完壳了 这样我们就构造出了一个新壳 这个壳要打引号 因为这个其实不能叫壳 其实这个文件是脱了壳的文件 只是就像我们保留了壳的信息    ,此时文件是不能运行的 因为我们脱完壳 但还是用原来的OEP

4.用OD 载入M1    我们在调节异常选项中 除内存异常 其他全部勾选上 然后F9 运行   程序停在某处   我们在此汇编CALL X2 复制所选 保存

我们以壳制壳的步骤全部做完了,程序是可以运行的   ,这个程序M1 ,其实是脱了壳的 ,由于我们保留了壳的信息, 所以PEID 误认为这个是UPX,也会起到误导杀软的作用。

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-13 15:54 , Processed in 0.052466 second(s), 16 queries .

返回顶部