首页
社区
课程
招聘
eXe32Pack V1.38加壳的EXE和DLL的简便脱壳方法――影音传送带(Net Transport) V1.90
发表于: 2004-6-24 02:03 14957

eXe32Pack V1.38加壳的EXE和DLL的简便脱壳方法――影音传送带(Net Transport) V1.90

fly 活跃值
85
2004-6-24 02:03
14957
                        
           
         
下载页面:  http://www.skycn.com/soft/9541.html
软件大小:  1949 KB
软件语言:  简体中文
软件类别:  国产软件 / 免费版 / 下载工具
应用平台:  Win9x/NT/2000/XP
加入时间:  2004-06-22 17:58:43
下载次数:  3819145
推荐等级:  ****
软件介绍:  影音传送带是一个高效稳定功能强大的下载工具,下载速度一流,CPU占用率低,尤其在宽带上特别明显;内建易于使用的文件管理器,轻松实现按类别存放下载的文件。而且只要站点支持,这些协议均支持多线程断点续传。MMS协议流每秒的字节数差不多是固定的,这就决定了MMS流本身不能充分利用用户的带宽资源,所以多线程技术能有效地缩短MMS流下载的时间。RTSP同样支持多线程,另外选中“流/最大速度”能明显提速,效果立竿见影。影音传送带支持HTTPS(加密套接字协议层),并且支持经过HTTP、SOCKS4&5等代理下载;FTP同样支持SSL,可以有效地保护传输的数据安全。
            
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
         
【调试环境】:WinXP、Ollydbg1.10、PEiD、LordPE、ImportREC
         
―――――――――――――――――――――――――――――――――
【脱壳过程】:
                  
         
DosKey兄弟提出这个程序的eXe32Pack壳,无法用PE-Scan自动脱壳,手脱后还有校验无法运行。所以抽点时间看看,恰好DLL脱壳系列中还没有eXe32Pack,呵呵。目标程序可以去天空下载,主程序NetTransport.exe和libcrypto.dll等几个DLL都是采用eXe32Pack加壳的。
           
―――――――――――――――――――――――――――――――――
一、主程序NetTransport.exe 脱壳
         
         
004E400C     3BC0                cmp eax,eax//进入OD后停在这
004E400E     74 02               je short NetTrans.004E4012
004E4010     8185 553BC074 02818>add dword ptr ss:[ebp+74C03B55],53808102
004E401A     3BD2                cmp edx,edx
004E401C     74 01               je short NetTrans.004E401F

           
直接下断: BP IsDebuggerPresent
F9运行,中断后Alt+F9返回00536ECE处
           
00536ECC     FFD0                call eax ;IsDebuggerPresent
00536ECE     8BBD D13C4000       mov edi,dword ptr ss:[ebp+403CD1]//返回这里!
00536ED4     03BD F73C4000       add edi,dword ptr ss:[ebp+403CF7]
//EDI=00088EAA + 00400000=00488EAA   这个就是OEP值啦 ★

           
直接下命令:G 00488EAA   直达OEP!
           
00488EAA     55                  push ebp//在这儿用LordPE完全DUMP这个进程
00488EAB     8BEC                mov ebp,esp
00488EAD     6A FF               push -1
00488EAF     68 B8864900         push NetTrans.004986B8
00488EB4     68 36904800         push NetTrans.00489036 ; jmp to msvcrt._except_handler3
00488EB9     64:A1 00000000      mov eax,dword ptr fs:[0]
00488EBF     50                  push eax
00488EC0     64:8925 00000000    mov dword ptr fs:[0],esp
00488EC7     83EC 68             sub esp,68
00488ECA     53                  push ebx
00488ECB     56                  push esi
00488ECC     57                  push edi
00488ECD     8965 E8             mov dword ptr ss:[ebp-18],esp
00488ED0     33DB                xor ebx,ebx
00488ED2     895D FC             mov dword ptr ss:[ebp-4],ebx
00488ED5     6A 02               push 2
00488ED7     FF15 B4EA4800       call dword ptr ds:[48EAB4]; msvcrt.__set_app_type

           
           
运行ImportREC,选择这个进程。把OEP改为00088EAA,点IT AutoSearch,点“Get Import”,FixDump!
删除eXe32Pack壳“”的区段,然后用LordPE重建PE,简单优化一下脱壳后的文件。EXE脱壳完成啦。
           
           
―――――――――――――――――――――――――――――――――
二、eXe32Pack V1.38加壳的DLL 脱壳
           
           
这个才是写这点东西的只要目的啦。
以libcrypto.dll为例子吧,因为这个dll对主程序有个校验啦。
――――――――――――――――――――――――
1、OEP
           
           
1003300C     3BC9                cmp ecx,ecx//进入OD后停在这
1003300E     74 02               je short libcrypt.10033012
10033010     8181 553BC974 02818>add dword ptr ds:[ecx+74C93B55],53848102
1003301A     3BC9                cmp ecx,ecx
1003301C     74 01               je short libcrypt.1003301F

           
直接下断: BP IsDebuggerPresent
F9运行,中断后Alt+F9返回10045A67处
           
10045A65     FFD0                call eax
10045A67     8BBD D13C4000       mov edi,dword ptr ss:[ebp+403CD1]//返回这里!
10045A6D     03BD F73C4000       add edi,dword ptr ss:[ebp+403CF7]
//EDI=0001C7AA + 10000000=1001C7AA   这个就是OEP值啦 ★

           
现在Ctrl+B在“整个段块”搜索16进制值:0F84F7000000
           
1004573B     74 01               je short libcrypt.1004573E
1004573D     BE 2BBDD53C         mov esi,3CD5BD2B
10045742     40                  inc eax
10045743     000F                add byte ptr ds:[edi],cl//找到这里
10045745     84F7                test bh,dh

           
因为有花指令,其实这段代码是:
1004573E     2BBD D53C4000       sub edi,dword ptr ss:[ebp+403CD5]
10045744     0F84 F7000000       je libcrypt.10045841

在1004573E处下个“硬件执行”断点,为将要寻找重定位表提供方便啦。
           
现在去OEP吧。G 1001C7AA
           
1001C7AA     55                  push ebp //OEP ★
1001C7AB     8BEC                mov ebp,esp
1001C7AD     53                  push ebx
1001C7AE     8B5D 08             mov ebx,dword ptr ss:[ebp+8]
1001C7B1     56                  push esi
1001C7B2     8B75 0C             mov esi,dword ptr ss:[ebp+C]
1001C7B5     57                  push edi
1001C7B6     8B7D 10             mov edi,dword ptr ss:[ebp+10]
1001C7B9     85F6                test esi,esi
1001C7BB     75 09               jnz short libcrypt.1001C7C6

           
         
用LordPE选中Ollydbg的loaddll.exe的进程,在下面的列表里选择libcrypto.dll,然后完整脱壳,得到dumped.dll。
           
           
――――――――――――――――――――――――
2、输入表
         
         
还是借用ImportREC吧。
随便从程序找一个API调用,如:
1001C72D     FF15 24F10110       call dword ptr ds:[1001F124];77BFAC46


在转存中跟随1001F124,上下看到许多函数地址,很明显的可以找到IAT开始和结束的地址:
         
1001F000   58 B2 0E 78 09 2D 0C 78 EC 1A 0C 78 B7 1A 0C 78  X?x.-.x?.x?.x
…… ……
1001F120   DB 79 C0 77 46 AC BF 77 88 D3 C2 77 00 00 00 00  垸厉F?w?瞒....


开始地址=1001F000
结束地址=1001F12C
         
运行ImportREC,选中Ollydbg的loaddll.exe的进程,然后点“选取DLL”,选择libcrypto.dll,填入RVA=0001F000、大小=12C,点“Get Import”,改OEP=0001C7AA,FixDump!
         
         
―――――――――――――――――――――――――――――――――
3、重定位表 修复
         
         
eXe32Pack壳没有加密重定位表,我们所要做的只是找到DLL原来的重定位表的RVA和大小就行了!
           
还记得在1004573E处下个“硬件执行”断点吧?OK,重新载入这个DLL,F9运行,中断在1004573E处
            
1004573E     2BBD D53C4000       sub edi,dword ptr ss:[ebp+403CD5]; libcrypt.10000000
//中断在这里!
10045744     0F84 F7000000       je libcrypt.10045841
//如与映像基址不符则重定位处理!★ 
//因为这个DLL不进行重定位,无论得到重定位表信息,所以我们在这里可以改标志位Z=0,使其不跳转!
           
1004574A     3BE4                cmp esp,esp
1004574C     74 01               je short libcrypt.1004574F
           
1004574F     8B53 04             mov edx,dword ptr ds:[ebx+4]
10045752     83EA 08             sub edx,8
10045755     3BDB                cmp ebx,ebx; libcrypt.1002C000
//EBX=1002C000                ★ 重定位表的开始地址!
10045757     74 02               je short libcrypt.1004575B
           
1004575B     0BD2                or edx,edx
1004575D     0F8E DE000000       jle libcrypt.10045841
//重定位处理结束则这里跳转!    ★

           
所以我们直接F4至10045841
     
10045841     80BD F53C4000 00    cmp byte ptr ss:[ebp+403CF5],0
//此时EBX=1002E470             ★ 这是重定位表的结束地址
10045848     0F84 CB010000       je libcrypt.10045A19

           
得到重定位表信息:
RVA=0002C000,大小=1002E470-1002C000=2470
                        
用LordPE修正dumped_.dll的重定位表RVA=0002C000、大小=00002470,保存之。DLL脱壳完成啦!
           
               
―――――――――――――――――――――――――――――――――
三、解除校验
           
           
重命名原文件。把dumped_.exe改名为NetTransport.exe,把dumped_.dll改名为libcrypto.dll
为何重命名NetTransport.exe?呵呵,发现脱壳前的原程序改名后都会异常出错,NetTransport.exe.manifest的缘故吧。为了省点事,就用原来的“名字”了。根据出错时的堆栈情况,判断、寻找程序中出错的地方。直接说修改的地方了。
           
0045CAC2     FF15 CC905300       call dword ptr ds:[<&kernel32.GetFileAttributesA>]
0045CAC8     83F8 FF             cmp eax,-1
0045CACB     74 24               je short NetTrans.0045CAF1
0045CACD     8D8C24 A0000000     lea ecx,dword ptr ss:[esp+A0]
0045CAD4     8D5424 70           lea edx,dword ptr ss:[esp+70]
0045CAD8     51                  push ecx
0045CAD9     6A 30               push 30
0045CADB     52                  push edx
0045CADC     68 24010000         push 124
0045CAE1     68 00104000         push NetTrans.00401000
0045CAE6     FF5424 24           call dword ptr ss:[esp+24]; libcrypt.wx_CheckFile
//CheckFile  很明显的提示呀
0045CAEA     83C4 14             add esp,14
0045CAED     3C 01               cmp al,1
0045CAEF     74 16               je short NetTrans.0045CB07//不跳就出错了

           
因为主程序中还有几处调用这个libcrypt.wx_CheckFile检测,所以进入DLL中修改。
           
00E542B3     8B8C24 58020000     mov ecx,dword ptr ss:[esp+258]
00E542BA     8AC3                mov al,bl//改为:mov al,1  ★
00E542BC     5E                  pop esi
00E542BD     5B                  pop ebx
00E542BE     64:890D 00000000    mov dword ptr fs:[0],ecx
00E542C5     81C4 5C020000       add esp,25C
00E542CB     C3                  retn

           
           
OK,现在脱壳后的NetTransport.exe和libcrypto.dll都可以正常运行了。     
           
                    
―――――――――――――――――――――――――――――――――   
                            
         ,     _/ 
        /| _.-~/            \_     ,        青春都一晌
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名 
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
 `~ _( ,_..--\ (     ,;'' /    ~--   /._`\ 
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""

   

     Cracked By 巢水工作坊――fly [OCN][FCG][NUKE][DCM]

                2004-06-24   02:00

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 8
支持
分享
最新回复 (20)
雪    币: 13606
活跃值: (4398)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
强悍....
2004-6-24 03:24
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
3
辛苦了╋著著。
2004-6-24 05:13
0
雪    币: 690
活跃值: (1821)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
学习
2004-6-24 06:59
0
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
5
因为NetTransport将要收费了,
昨天我也看了,并把他脱了,
没想到 Fly 已经发布脱文了。
  :p
2004-6-24 07:32
0
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
顶~!
2004-6-24 07:41
0
雪    币: 236
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
强力支持:D
2004-6-24 12:53
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
8
根据教程做了exe和dll,结果还是不能用,fly放你FIXED了的dll上来看看。偶做的最新的1.91。271
2004-7-24 08:52
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
9
最初由 china 发布
根据教程做了exe和dll,结果还是不能用,fly放你FIXED了的dll上来看看。偶做的最新的1.91。271


UnPaked - NetTransport V1.91

问ABC老大好
脱壳方面是相似的。检验部分如下:
可以BP GetFileAttributesA
0045EF86     FF15 DC204900       call dword ptr ds:[<&kernel32.GetFileAttributesA>]
0045EF8C     83F8 FF             cmp eax,-1
0045EF8F     74 24               je short NetTrans.0045EFB5
0045EF91     8D8C24 A4010000     lea ecx,dword ptr ss:[esp+1A4]
0045EF98     8D5424 70           lea edx,dword ptr ss:[esp+70]
0045EF9C     51                  push ecx
0045EF9D     6A 30               push 30
0045EF9F     52                  push edx
0045EFA0     68 24010000         push 124
0045EFA5     68 00104000         push NetTrans.00401000
0045EFAA     FF5424 24           call dword ptr ss:[esp+24]; libcrypt.wx_CheckFile
//DLL中检验
0045EFAE     83C4 14             add esp,14
0045EFB1     3C 01               cmp al,1
0045EFB3     74 16               je short NetTrans.0045EFCB//不跳就出错了


进入libcrypt.DLL中修改:
00E642AE     E8 7D10FFFF         call libcrypt.00E55330
00E642B3     8B8C24 58020000     mov ecx,dword ptr ss:[esp+258]
00E642BA     8AC3                mov al,bl//改为:mov al,1  ★
00E642BC     5E                  pop esi
00E642BD     5B                  pop ebx
00E642BE     64:890D 00000000    mov dword ptr fs:[0],ecx
00E642C5     81C4 5C020000       add esp,25C
00E642CB     C3                  retn


附件中的是NetTransport.exe和libcrypto.dll的UnPacked
请测试

点击下载:附件!UnPaked――NetTransport V1.91.rar
2004-7-24 13:44
0
雪    币: 2862
活跃值: (2500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习
2004-7-24 13:51
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
11
完成,重新做了一遍,竟然299K,比你的大多了,不知道怎么优化一下。
2004-7-24 15:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
删除壳添加的区段,然后用 LoadPE 重建一下:)
2004-7-24 18:04
0
雪    币: 3511
活跃值: (4037)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
13
最初由 sigporsson 发布
删除壳添加的区段,然后用 LoadPE 重建一下:)


偶去试试,谢谢
2004-7-24 19:23
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
14
好文收藏!
2004-7-24 19:46
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
00401570       6A        db 6A                                       ;  CHAR 'j'
00401571       74        db 74                                       ;  CHAR 't'
00401572       68        db 68                                       ;  CHAR 'h'
00401573       08        db 08
00401574       C3        db C3
00401575       41        db 41                                       ;  CHAR 'A'
00401576       00        db 00
00401577       E8        db E8
00401578       DC        db DC
00401579       02        db 02
0040157A       00        db 00
0040157B       00        db 00
0040157C       33        db 33                                       ;  CHAR '3'
0040157D       DB        db DB
0040157E       89        db 89
0040157F       5D        db 5D                                       ;  CHAR ']'
00401580       E0        db E0
00401581       53        db 53                                       ;  CHAR 'S'
00401582    .  8B3D 84C0>mov edi,dword ptr ds:[41C084]               ;  kernel32.GetModuleHandleA

不是标准的壳?
2005-10-11 00:35
0
雪    币: 233
活跃值: (130)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
16
楼上把1年前的贴子顶上来了,汗!

标准VC7 MFC的头
Ctrl + A 一下就看清楚了
2005-10-11 09:17
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
最初由 南蛮妈妈 发布
楼上把1年前的贴子顶上来了,汗!

标准VC7 MFC的头
Ctrl + A 一下就看清楚了

明白了 谢谢!
2005-10-12 00:56
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
运行ImportREC,选择这个进程。把OEP改为00088EAA,点IT AutoSearch,点“Get Import”,FixDump!
删除eXe32Pack壳“”的区段,然后用LordPE重建PE,简单优化一下脱壳后的文件。EXE脱壳完成啦


"r" 一定要删除吗? 怎么删除?
我脱了 一个类似的壳没成功,fixdump 成功了,后面的我就不会了,大虾帮忙 说说!
2005-10-12 00:59
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
19
修复好输入表就行了
删不删此区段无所谓
2005-10-12 08:52
0
雪    币: 17
活跃值: (369)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
支持一下收藏
2005-10-12 11:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
very good
2005-10-13 15:54
0
游客
登录 | 注册 方可回帖
返回
//