下载页面:
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直播授课