本类共有 70 篇文章,今日更新 0

手动脱壳入门第十七篇 VGCrypt PE Encryptor V0.75

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2007-5-18 18:31:26 | 浏览: 人次 ]


【脱文标题】 手动脱壳入门第十七篇 VGCrypt PE Encryptor V0.75

【脱文作者】 weiyi75[Dfcg]

【作者邮箱】 weiyi75@sohu.com

【作者主页】 Dfcg官方大本营

【使用工具】 Peid,Ollydbg,ImportREC

【脱壳平台】 Win2K/XP

【软件名称】 VGCrypt PE Encryptor V0.75

【软件简介】 This is a fairly simple PE encryptor I wrote up. I commented everything that is relavent to PE appendation or insertion, more so than I needed to even. The most interesting feature of this encryptor is that it attempts to find a location to insert itself between object virtual size and the next file alignment boundary, thus not changing the physical file size.

【软件大小】 16 KB

【下载地址】 本地下载Vgcrypt.rar

【加壳方式】 Virogen Crypt 0.75

【保护方式】 Virogen Crypt资源保护壳

【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)

--------------------------------------------------------------------------------

【脱壳内容】

下载这个程序,用 Vgcrypt Notepad.exe  的命令行方法压缩了一个Win98的记事本,倒,原文件大小等于压缩后大小52K,程序也没有加密IAT,仅仅搞乱了Code段,让你无法反汇编,用资源编辑软件发现可以编辑资源。

加壳记事本

本地下载Notepad.rar

首先Peid查壳,为Virogen Crypt 0.75,OD载入运行,无任何异常,判断其为压缩壳。

0040584C >  9C              PUSHFD      //记事本外壳入口。
0040584D    55              PUSH EBP
0040584E    E8 EC000000     CALL 1.0040593F
00405853    87D5            XCHG EBP,EDX
00405855    5D              POP EBP
00405856    60              PUSHAD    //从这这句过后用ESP定律吧,
00405857    87D5            XCHG EBP,EDX  //到这里ESP=12ffa0
00405859    80BD 15274000 0>CMP BYTE PTR SS:[EBP+402715],1
00405860    74 39           JE SHORT 1.0040589B
00405862    C685 15274000 0>MOV BYTE PTR SS:[EBP+402715],1
00405869    E9 E4000000     JMP 1.00405952
0040586E  - E9 79DAFF90     JMP 914032EC
00405873    D6              SALC
00405874    64:CE           INTO                                     ; 多余的前缀
00405876    E4 3C           IN AL,3C                                 ; I/O 命令
00405878    40              INC EAX
00405879    94              XCHG EAX,ESP
0040587A    65:EC           IN AL,DX                                 ; I/O 命令
0040587C  ^ 78 8D           JS SHORT 1.0040580B
.............................................................

dd 12ffa0

下硬件访问-Dword断点。

F9运行

硬件中断。

004058A8    9D              POPFD  //堆栈平衡
004058A9    8B9A 09274000   MOV EBX,DWORD PTR DS:[EDX+402709]
004058AF    898A 09274000   MOV DWORD PTR DS:[EDX+402709],ECX
004058B5    FFE3            JMP EBX  //跳往OEP 4010CC

004010CC      55            DB 55     //右键清除分析
004010CD      8B            DB 8B
004010CE      EC            DB EC
004010CF      83            DB 83
004010D0      EC            DB EC
004010D1      44            DB 44                                    ;  CHAR 'D'
004010D2      56            DB 56                                    ;  CHAR 'V'
004010D3      FF            DB FF
004010D4      15            DB 15
004010D5   .  E4634000      DD <&KERNEL32.GetCommandLineA>
004010D9      8B            DB 8B
004010DA      F0            DB F0
004010DB      8A            DB 8A
004010DC      00            DB 00
004010DD      3C            DB 3C                                    ;  CHAR '<'
004010DE      22            DB 22                                    ;  CHAR '"'
004010DF      75            DB 75                                    ;  CHAR 'u'
................................................................................

004010CC    55              PUSH EBP   //在这里用Loadpe直接脱壳
004010CD    8BEC            MOV EBP,ESP
004010CF    83EC 44         SUB ESP,44
004010D2    56              PUSH ESI
004010D3    FF15 E4634000   CALL DWORD PTR DS:[<&KERNEL32.GetCommand>; KERNEL32.GetCommandLineA
004010D9    8BF0            MOV ESI,EAX
004010DB    8A00            MOV AL,BYTE PTR DS:[EAX]
004010DD    3C 22           CMP AL,22
004010DF    75 1B           JNZ SHORT 1.004010FC
004010E1    56              PUSH ESI
004010E2    FF15 F4644000   CALL DWORD PTR DS:[<&USER32.CharNextA>]  ; USER32.CharNextA
004010E8    8BF0            MOV ESI,EAX
004010EA    8A00            MOV AL,BYTE PTR DS:[EAX]
004010EC    84C0            TEST AL,AL
004010EE    74 04           JE SHORT 1.004010F4
004010F0    3C 22           CMP AL,22
004010F2  ^ 75 ED           JNZ SHORT 1.004010E1
004010F4    803E 22         CMP BYTE PTR DS:[ESI],22
................................................................................

运行ImportREC,选择这个进程。把OEP改为000010cc,点IT AutoSearch,点“Get Import”,函数都是有效的。FixDump,无法运行。倒,用Loadpe重建Pe,正常运行。

继续OD载入它的主程序。

00408000 >  9C              PUSHFD  //主程序外壳入口。
00408001    55              PUSH EBP
00408002    E8 EC000000     CALL Vgcrypt.004080F3
00408007    87D5            XCHG EBP,EDX
00408009    5D              POP EBP
0040800A    60              PUSHAD     //从这这句过后用ESP定律吧,
0040800B    87D5            XCHG EBP,EDX     //到这里ESP=12ffa0
0040800D    80BD 15274000 0>CMP BYTE PTR SS:[EBP+402715],1
00408014    74 39           JE SHORT Vgcrypt.0040804F
00408016    C685 15274000 0>MOV BYTE PTR SS:[EBP+402715],1
0

[1] [2] [3] 下一页

广告位