下载页面: 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 踶纖Fw堄聎....
开始地址=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