看雪软件安全论坛



返回   看雪软件安全论坛 > 软件安全 > 『加壳与脱壳』

Expired Thread 该主题: "eXe32Pack V1.38加壳的EXE和DLL的简便脱壳方法――影音传送带(Net Transport) V1.90" 因在一年内没有任何回复而自动关闭。
如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。

发表新主题 关闭主题
精华帖  
主题工具 显示模式
本站声明:看雪论坛文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者信息及本声明!
fly
级别:16 | 在线时长:323小时 | 升级还需:34小时

fly 的头像

VIP会员
VIP会员

资 料:
注册日期: Apr 2004
帖子: 7,640 fly 品行端正
精华: 85
现金: 202 Kx
1 旧 icon21 eXe32Pack V1.38加壳的EXE和DLL的简便脱壳方法――影音传送带(Net Transport) V1.90
fly 当前离线

标 题: eXe32Pack V1.38加壳的EXE和DLL的简便脱壳方法――影音传送带(Net Transport) V1.90
作 者: fly
时 间: 2004-06-24,02:03:47
链 接: http://bbs.pediy.com/showthread.php?t=2138

                        
           
         
下载页面:  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

此帖于 2004-06-24 02:06:28 被 fly 最后编辑
回复时引用此帖 返回顶端
声声慢@81.64.68.*

游客

资 料:
帖子: n/a
精华:
现金: Kx
3 旧 2004-06-24, 05:13:26 默认

辛苦了╋著著。

回复时引用此帖 返回顶端
daxia200N
级别:9 | 在线时长:139小时 | 升级还需:1小时级别:9 | 在线时长:139小时 | 升级还需:1小时级别:9 | 在线时长:139小时 | 升级还需:1小时

daxia200N 的头像

中级会员
中级会员

资 料:
注册日期: May 2004
帖子: 513 daxia200N 品行端正
精华: 6
现金: 201 Kx
4 旧 2004-06-24, 06:59:40 默认
daxia200N 当前离线

学习

回复时引用此帖 返回顶端
simonzh2000
级别:3 | 在线时长:31小时 | 升级还需:1小时级别:3 | 在线时长:31小时 | 升级还需:1小时级别:3 | 在线时长:31小时 | 升级还需:1小时

simonzh2000 的头像

中级会员
中级会员

资 料:
注册日期: Apr 2004
帖子: 461 simonzh2000 品行端正
精华: 24
现金: 200 Kx
5 旧 2004-06-24, 07:32:45 默认
simonzh2000 当前离线

因为NetTransport将要收费了,
昨天我也看了,并把他脱了,
没想到 Fly 已经发布脱文了。
  :p 

回复时引用此帖 返回顶端
kimmal
级别:0 | 在线时长:3小时 | 升级还需:2小时

kimmal 的头像

普通会员
普通会员

资 料:
注册日期: May 2004
帖子: 404 kimmal 品行端正
精华: 1
现金: 200 Kx
6 旧 2004-06-24, 07:41:16 默认
kimmal 当前离线

顶~!

回复时引用此帖 返回顶端
xeno
级别:0 | 在线时长:2小时 | 升级还需:3小时

xeno 的头像

普通会员
普通会员

资 料:
注册日期: Jun 2004
帖子: 195 xeno 品行端正
精华: 2
现金: 200 Kx
7 旧 2004-06-24, 12:53:12 默认
xeno 当前离线

强力支持:D

回复时引用此帖 返回顶端
china
级别:8 | 在线时长:107小时 | 升级还需:10小时级别:8 | 在线时长:107小时 | 升级还需:10小时

FTP维护
FTP维护

资 料:
注册日期: Apr 2004
帖子: 1,372 china 品行端正
精华: 5
现金: 1875 Kx
8 旧 2004-07-24, 08:52:35 默认
china 当前离线

根据教程做了exe和dll,结果还是不能用,fly放你FIXED了的dll上来看看。偶做的最新的1.91。271

回复时引用此帖 返回顶端
fly
级别:16 | 在线时长:323小时 | 升级还需:34小时

fly 的头像

VIP会员
VIP会员

资 料:
注册日期: Apr 2004
帖子: 7,640 fly 品行端正
精华: 85
现金: 202 Kx
9 旧 2004-07-24, 13:44:51 默认 UnPaked - NetTransport V1.91
fly 当前离线

引用:
最初由 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

回复时引用此帖 返回顶端
benladen
级别:2 | 在线时长:15小时 | 升级还需:6小时级别:2 | 在线时长:15小时 | 升级还需:6小时

benladen 的头像

初级会员
初级会员

资 料:
注册日期: May 2004
帖子: 264 benladen 品行端正
精华: 0
现金: 201 Kx
10 旧 2004-07-24, 13:51:26 默认
benladen 当前离线

学习

回复时引用此帖 返回顶端
china
级别:8 | 在线时长:107小时 | 升级还需:10小时级别:8 | 在线时长:107小时 | 升级还需:10小时

FTP维护
FTP维护

资 料:
注册日期: Apr 2004
帖子: 1,372 china 品行端正
精华: 5
现金: 1875 Kx
11 旧 2004-07-24, 15:47:28 默认
china 当前离线

完成,重新做了一遍,竟然299K,比你的大多了,不知道怎么优化一下。

回复时引用此帖 返回顶端
sigporsson
级别:1 | 在线时长:7小时 | 升级还需:5小时

初级会员
初级会员

资 料:
注册日期: Jun 2004
帖子: 22 sigporsson 品行端正
精华: 0
现金: 200 Kx
12 旧 2004-07-24, 18:04:19 默认
sigporsson 当前离线

删除壳添加的区段,然后用 LoadPE 重建一下:)

此帖于 2004-07-24 18:14:42 被 sigporsson 最后编辑
回复时引用此帖 返回顶端
china
级别:8 | 在线时长:107小时 | 升级还需:10小时级别:8 | 在线时长:107小时 | 升级还需:10小时

FTP维护
FTP维护

资 料:
注册日期: Apr 2004
帖子: 1,372 china 品行端正
精华: 5
现金: 1875 Kx
13 旧 2004-07-24, 19:23:21 默认
china 当前离线

引用:
最初由 sigporsson 发布
删除壳添加的区段,然后用 LoadPE 重建一下:) 
偶去试试,谢谢

回复时引用此帖 返回顶端
aaa2520
级别:9 | 在线时长:133小时 | 升级还需:7小时级别:9 | 在线时长:133小时 | 升级还需:7小时级别:9 | 在线时长:133小时 | 升级还需:7小时

普通会员
普通会员

资 料:
注册日期: Jul 2004
帖子: 367 aaa2520 品行端正
精华: 1
现金: 202 Kx
15 旧 2005-10-11, 00:35:35 默认 一个提示的是exe32pack 1.3x的 ALT+F9 返回的是如下信息,为什么?
aaa2520 当前离线

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

不是标准的壳?

回复时引用此帖 返回顶端
发表新主题 关闭主题

书签
Expired Thread 该主题: "eXe32Pack V1.38加壳的EXE和DLL的简便脱壳方法――影音传送带(Net Transport) V1.90" 因在一年内没有任何回复而自动关闭。
如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。


主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子
论坛启用 BB 代码
论坛启用 表情符号
论坛跳转


所有时间均为北京时间。现在的时间是 22:02:08


©2000-2010 PEdiy.com All rights reserved.By PEDIY
Powered by vBulletin ®Jelsoft Enterprises Ltd. 增强包制作PHP源动力.界面支持standme Studio.