飘云阁安全网

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5760|回复: 17

[原创] ExeInfo PE ver. 0.0.2.4 正式版 脱壳+资源优化+去自校验

[复制链接]
  • TA的每日心情
    开心
    2022-5-22 11:58
  • 签到天数: 182 天

    [LV.7]常住居民III

    发表于 2009-8-8 20:38:55 | 显示全部楼层 |阅读模式
    【破文标题】ExeInfo PE ver. 0.0.2.4 正式版 脱壳+资源优化+去自校验
    【破文作者】cxx17
    【作者主页】NO
    【作者邮箱】NO
    破解工具】peid,OD
    【破解平台】Win XP SP3
    【软件名称】ExeInfo PE ver. 0.0.2.4 正式版
    【软件大小】557kb
    【原版下载】http://users.cjb.net/exeinfo/exeinfope.zip
    【保护方式】壳 + 自校验
    【软件简介】一个不错的查壳软件!
    【破解声明】只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    -----------------------------------------------------
    【破解过程】-----------------------------------------

    1、查壳。
    用PEID深度扫描,发现是“UPX V2.00-V3.X -> Markus Oberhumer & Laszlo Molnar & John Reiser   * Sign.By.fly *”加的壳。

    2、脱壳。
    od载入程序,停在下面:

    065933AB > /EB 0A           JMP SHORT exeinfop.065933B7              ; 停在这里,F8单步走
    065933AD   |EB 01           JMP SHORT exeinfop.065933B0
    065933AF   |68 60E80000     PUSH 0E860
    065933B4   |0000            ADD BYTE PTR DS:[EAX],AL
    065933B6   |8B90 90909090   MOV EDX,DWORD PTR DS:[EAX+90909090]
    065933BC    90              NOP
    065933BD    90              NOP
    065933BE    90              NOP
    065933BF    90              NOP
    065933C0    90              NOP
    065933C1    90              NOP
    065933C2    90              NOP
    065933C3    90              NOP
    065933C4    90              NOP
    065933C5    90              NOP
    065933C6    90              NOP
    065933C7    90              NOP
    065933C8    90              NOP
    065933C9    90              NOP
    065933CA    90              NOP
    065933CB    90              NOP
    065933CC    90              NOP
    065933CD    EB 04           JMP SHORT exeinfop.065933D3              ; 到这里,继续F8

    065933D3    90              NOP                                      ; 来到这里,继续F8
    065933D4  ^ E9 07F4FFFF     JMP exeinfop.065927E0                    ; F8

    065927E0    60              PUSHAD                                   ; F8
    065927E1    BE 00B05006     MOV ESI,exeinfop.0650B000                ; 命令行下断点 hr esp 然后F9运行

    0659336C    8D4424 80       LEA EAX,DWORD PTR SS:[ESP-80]            ; 来到这里取消硬件断点
    06593370    6A 00           PUSH 0
    06593372    39C4            CMP ESP,EAX
    06593374  ^ 75 FA           JNZ SHORT exeinfop.06593370
    06593376    83EC 80         SUB ESP,-80
    06593379  - E9 0667F8F9     JMP exeinfop.00519A84                    ; 这里F2下断,F9运行断下后,取消断点,单步F8一下就跳到了OEP

    00519A84    55              PUSH EBP                                 ; OEP
    00519A85    8BEC            MOV EBP,ESP
    00519A87    B9 07000000     MOV ECX,7
    00519A8C    6A 00           PUSH 0
    00519A8E    6A 00           PUSH 0
    00519A90    49              DEC ECX
    00519A91  ^ 75 F9           JNZ SHORT exeinfop.00519A8C
    00519A93    53              PUSH EBX
    00519A94    56              PUSH ESI
    00519A95    57              PUSH EDI
    00519A96    B8 4C825100     MOV EAX,exeinfop.0051824C
    00519A9B    E8 C4DAEEFF     CALL exeinfop.00407564

    来到OEP后,用OD插件脱壳,在OD插件上注意选择“重建输入表”-->“方式2”,脱壳后就能运行。

    2、资源优化。
    脱壳后程序有“97.5MB”,用软件“Resource Binder 2.6”重构一下资源,在软件“Resource Binder 2.6”界面“选项”上勾选所以项目,选择文件后,点击“重构”,文件大小变为“1.90MB”,运行重构后的资源,出现错误提示,用"ImpREC"修复下输入表。
    修复输入表时,先运行脱壳后的软件,用“ImpREC”选中脱壳后的软件,点“自动查找IAT”-->“获取输入表”-->“转储到文件”,选中优化后的文件,修复一下就能运行了。软件大小变为“1.91MB”。

    3、去自校验。
    脱壳后的软件有错误提示“Exeinfo was corrupted - Please download new”。
    OD载入修复好的程序,命令行下断点“bp CreateFileA”,F9运行,断在下面:
    7C801A28 >  8BFF            MOV EDI,EDI                              ; 断在这里,取消断点,ALT + F9 返回
    7C801A2A    55              PUSH EBP
    7C801A2B    8BEC            MOV EBP,ESP
    7C801A2D    FF75 08         PUSH DWORD PTR SS:[EBP+8]
    7C801A30    E8 DFC60000     CALL kernel32.7C80E114
    7C801A35    85C0            TEST EAX,EAX
    7C801A37    74 1E           JE SHORT kernel32.7C801A57

    00403D48    83F8 FF         CMP EAX,-1                               ; 返回到这里,F8往下走
    00403D4B    74 24           JE SHORT unpack_.00403D71
    00403D4D    8903            MOV DWORD PTR DS:[EBX],EAX
    00403D4F    EB 30           JMP SHORT unpack_.00403D81
    00403D51    C743 24 BC33400>MOV DWORD PTR DS:[EBX+24],unpack_.004033>
    00403D58    83FF 03         CMP EDI,3
    00403D5B    74 04           JE SHORT unpack_.00403D61
    00403D5D    6A F6           PUSH -0A
    00403D5F    EB 02           JMP SHORT unpack_.00403D63
    00403D61    6A F5           PUSH -0B
    00403D63    E8 CCD4FFFF     CALL <JMP.&kernel32.GetStdHandle>
    00403D68  ^ EB DE           JMP SHORT unpack_.00403D48
    00403D6A    B8 66000000     MOV EAX,66
    00403D6F    EB 0B           JMP SHORT unpack_.00403D7C
    00403D71    66:C743 04 B0D7 MOV WORD PTR DS:[EBX+4],0D7B0
    00403D77    E8 40D5FFFF     CALL <JMP.&kernel32.GetLastError>
    00403D7C    E8 0BF1FFFF     CALL unpack_.00402E8C
    00403D81    5F              POP EDI
    00403D82    5E              POP ESI
    00403D83    5B              POP EBX
    00403D84    C3              RETN

    005035AC    803D BE4D5306 0>CMP BYTE PTR DS:[6534DBE],3              ; F8来到这里后,把这句改为:CMP BYTE PTR DS:[6534DBE],6
    005035B3    75 12           JNZ SHORT unpack_.005035C7
    005035B5    A1 B0135300     MOV EAX,DWORD PTR DS:[5313B0]
    005035BA    8B80 60030000   MOV EAX,DWORD PTR DS:[EAX+360]
    005035C0    B2 01           MOV DL,1
    005035C2    E8 2DEFF4FF     CALL unpack_.004524F4
    005035C7    B2 02           MOV DL,2
    005035C9    8BC3            MOV EAX,EBX
    005035CB    E8 6CFDFFFF     CALL unpack_.0050333C
    005035D0    EB 07           JMP SHORT unpack_.005035D9

    改好后保存文件,发现没有错误提示了。
    用修改后的程序查壳,发现会退出,说明还有校验。
    继续用OD载入程序,下断点“bp ExitProcess”,F9运行后,查壳,一会程序断在下面:
    7C81CB12 >  8BFF            MOV EDI,EDI                              ; 断在这里,取消断点
    7C81CB14    55              PUSH EBP
    7C81CB15    8BEC            MOV EBP,ESP
    7C81CB17    6A FF           PUSH -1
    7C81CB19    68 B0F3E877     PUSH 77E8F3B0
    7C81CB1E    FF75 08         PUSH DWORD PTR SS:[EBP+8]
    7C81CB21    E8 46FFFFFF     CALL kernel32.7C81CA6C
    7C81CB26    E9 9ACF0100     JMP kernel32.7C839AC5

    这里断下后,看堆栈窗口:
    0012FA0C   004053D5  /CALL 到 ExitProcess 来自 unpack_1.004053D0
    0012FA10   00000000  \ExitCode = 0

    我们直接到004053D0看看:
    004053D0    E8 AFBEFFFF     CALL <JMP.&kernel32.ExitProcess>
    004053D5    8B03            MOV EAX,DWORD PTR DS:[EBX]

    然后在这段代码的段首看看:
    00405310    53              PUSH EBX                                 ; 这里下断
    00405311    56              PUSH ESI
    00405312    57              PUSH EDI
    00405313    55              PUSH EBP
    00405314    BB C4075200     MOV EBX,unpack_1.005207C4
    00405319    BF 44E05100     MOV EDI,unpack_1.0051E044
    0040531E    807B 28 00      CMP BYTE PTR DS:[EBX+28],0
    00405322    75 14           JNZ SHORT unpack_1.00405338
    00405324    833F 00         CMP DWORD PTR DS:[EDI],0
    00405327    74 0F           JE SHORT unpack_1.00405338



    运行程序,查壳,断下后看堆栈窗口:
    0012FA24   0050231B  返回到 unpack_1.0050231B 来自 unpack_1.00405310
    0012FA28   0012FB94  指向下一个 SEH 记录的指针
    0012FA2C   005023DF  SE 处理器

    我们在堆栈的第一行上点右键,点击“跟随到反汇编窗口”,来到这里:
    0050231B    33C0            XOR EAX,EAX                              ; 来到这里往上看

    005022BC    E8 B7C4FFFF     CALL unpack_1.004FE778
    005022C1    3D 9CD30000     CMP EAX,0D39C
    005022C6    74 53           JE SHORT unpack_1.0050231B               ; 发现这个跳比较可疑,改为:Jmp SHORT 0050231B
    005022C8    B8 20345000     MOV EAX,unpack_1.00503420
    005022CD    E8 A6C4FFFF     CALL unpack_1.004FE778
    005022D2    33D2            XOR EDX,EDX
    005022D4    52              PUSH EDX
    005022D5    50              PUSH EAX
    005022D6    8D95 B4FEFFFF   LEA EDX,DWORD PTR SS:[EBP-14C]
    005022DC    B8 08000000     MOV EAX,8
    005022E1    E8 6678F0FF     CALL unpack_1.00409B4C
    005022E6    8B95 B4FEFFFF   MOV EDX,DWORD PTR SS:[EBP-14C]
    005022EC    A1 B0135300     MOV EAX,DWORD PTR DS:[5313B0]
    005022F1    8B80 68030000   MOV EAX,DWORD PTR DS:[EAX+368]
    005022F7    E8 0803F5FF     CALL unpack_1.00452604
    005022FC    A1 B0135300     MOV EAX,DWORD PTR DS:[5313B0]
    00502301    8B80 68030000   MOV EAX,DWORD PTR DS:[EAX+368]
    00502307    E8 D008F5FF     CALL unpack_1.00452BDC
    0050230C    68 4C040000     PUSH 44C
    00502311    E8 3ACCF0FF     CALL <JMP.&kernel32.Sleep>
    00502316    E8 F52FF0FF     CALL unpack_1.00405310
    0050231B    33C0            XOR EAX,EAX                              ; 来到这里往上看

    改好后,保存,发现不退出了。

    【破解总结】-----------------------------------------

    本文是在观看了 RegKiller 老大的动画教程“exeinfope脱壳+减肥+去效验+去暗桩”的基础上完成,在此表示感谢!


    -----------------------------------------------------
    【版权声明】菜鸟之作,可以自由转载, 转载请注明作者并保持文章的完整, 谢谢!
    -----------------------------------------------------

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?加入我们

    x

    评分

    参与人数 1威望 +20 飘云币 +40 收起 理由
    Nisy + 20 + 40 PYG有你更精彩!

    查看全部评分

    该用户从未签到

    发表于 2009-8-8 21:07:12 | 显示全部楼层
    不错 /:good

    该用户从未签到

    发表于 2009-8-9 08:31:18 | 显示全部楼层
    小弟再这里向老兄学习了,谢谢~!
  • TA的每日心情
    开心
    2020-10-8 13:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-8-15 07:27:35 | 显示全部楼层
    感谢LZ分享的脱壳文章,收藏学习!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-8-21 07:32:35 | 显示全部楼层
    005035AC    803D BE4D5306 0>CMP BYTE PTR DS:[6534DBE],3              ; F8来到这里后,把这句改为:CMP BYTE PTR DS:[6534DBE],6
    楼主,为什么把3改为6?能否告知,谢谢!

    该用户从未签到

    发表于 2009-9-10 21:09:41 | 显示全部楼层
    学习壳,基本壳盲!

    该用户从未签到

    发表于 2009-9-11 14:21:32 | 显示全部楼层
    来学习下,谢谢分享
  • TA的每日心情
    奋斗
    2017-3-10 20:59
  • 签到天数: 243 天

    [LV.8]以坛为家I

    发表于 2012-6-30 15:05:46 | 显示全部楼层
    菜鸟来学习了,收藏了,感谢分享了
  • TA的每日心情
    奋斗
    2020-10-23 15:44
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2012-6-30 19:27:10 | 显示全部楼层
    写的很好,学习了。
  • TA的每日心情
    开心
    前天 14:40
  • 签到天数: 1699 天

    [LV.Master]伴坛终老

    发表于 2014-2-10 09:16:18 | 显示全部楼层
    方法很好学习仿照
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    小黑屋|手机版|Archiver|粤公网安备 44010602010026号|飘云阁安全网 ( 粤ICP备15107817号-2 )

    Powered by Discuz! Copyright © 2001-2022, Tencent Cloud.

    快速回复 返回顶部 返回列表