黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 软件破解 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[图文]PELock v1.0x 脱壳之完美风暴
      ★★★★★

PELock v1.0x 脱壳之完美风暴

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-3-28 9:19:24


    PELock将原程序中的一些6字节指令重定向到外壳申请的空间去执行,这样脱壳以后程序就会出现访问异常。下面是PELock通常下毒手的一些指令:

第一组:

004011C6  JMP     00880187
004011CB  DB      00

00880187  CALL    DWORD PTR DS:[404008]      ; call dword ptr [XXXXXXXX]
0088018D  JMP     ACP_Feed.004011CC

第二组:

0040190A  JMP     00880341
0040190F  CDQ

00880341  LEA     EBX,DWORD PTR DS:[C5FCE76]
00880347  LEA     EBX,DWORD PTR DS:[EBX+22CDBDF0]
0088034D  LEA     EBX,DWORD PTR DS:[EBX+459B7BE1]
00880353  LEA     EBX,DWORD PTR DS:[EBX+8B36F7C3]  ; mov ebx, XXXXXXXX
00880359  JMP     ACP_Feed.0040190F

    当然这里也有可能是eax, ecx, ebp ... whatever
    
第三组:

004010D8  JMP     008800FD
004010DD  PUSH    DWORD PTR FS:[EDX]

008800FD  PUSH    40119A        ; push XXXXXXXX
00880102  JMP     ACP_Feed.004010DD

第四组:

00401293  JMP     008801B1
00401298  JE      SHORT 004012A1

008801B1  CMP     EAX,0D00        ; cmp eax, XXXXXXXX
008801B7  JMP     ACP_Feed.00401298

    当然这里也有可能是ebx, ecx, ebp ... whatever
    
    Copyright by redoc (redoc at citiz.net)

    指令的变形并不复杂,甚至可以说几乎没有变化,但是给转储带来困难。一种比较取巧的方法是把这些区段补到脱壳后的文件中,但是要完美还原的话还是要写代码来修复。jingulong达人曾经给出一段修复代码,没能耐心看完,自己写了一个ODbgScript脚本做了一下类似反汇编器的工作如下:
    
        mov  TmpOpcode, [TmpRemoteJmp], 1
        cmp  TmpOpcode, FF        // call/jmp dword ptr [XXXXXXXX]
        je  CallJmpDwordIns
        cmp  TmpOpcode, 8D        // lea reg32, [XXXXXXXX]
        je  AddRegIns
        cmp  TmpOpcode, 68        // push XXXXXXXX
        je  PushConstIns
        cmp  TmpOpcode, 81        // cmp reg32, XXXXXXXX
        je  CmpRegIns
        msg  "new mode"        // more transforming modes to be revealed:)
        ret
        
        …………………………
        
    完美还原所有的Redirected Code到原来的位置上,脚本比较长,不过理解了上述原理就很容易实现。
    
    最后剩下需要处理的就是Delphi的那张表了,我们注意一下程序运行到入口点时eax的值:00356C20

@ACP_Feed_00356C20:

dd 000000007h, 000356C28h, 000401E24h, 000401DF4h, 000401C64h, 000401C10h, 000401E5Ch, 000401E2Ch
                    |           |
                    ~~~~~~~~~~~~~
dd 000401F2Ch, 000401EFCh, 000401F64h, 000401F34h, 000401FA4h, 000401F74h, 000000000h, 0004020E8h

    这是一张地址表,既包含了数据又包含了代码指针,需要留意的是上面标出的这两个数据,第二个数据恰好是指向第三个数据的指针。
    
    现在我们把这个表搬到脱壳以后废弃的区段中,把入口点处的 "mov eax, XXXXXXXX" 中的 XXXXXXXX 设定为这个表的指针。
    
    今年的暖冬让人不禁战栗,也许在南太平洋的某块水域,一场完美的热带风暴正在紧张的酝酿之中……
    
    PELock, u r TermiNated...

上一页  [1] [2] 

文章录入:cainiaowang    责任编辑:liult 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886