黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 软件破解 >> 正文
·完美空间提供500M免费AS04-10·企业安全之YY内网准入以04-09
·企业安全之意识与策略04-09·剑走偏锋:IIS漏洞利用04-09
·我来免费网提供100M免费04-09·1122mb.com提供20G超大免04-08
·映像劫持与反劫持技术04-07·让所有"暴力删除工具"无04-07
·入侵88red系统的详细过程04-07·Sql Injection脚本注入终04-07
·vbs+delphi 反弹后门生成04-07·飞讯网提供100MB免费PHP04-07
·突破SQL注入攻击时输入框04-04·结合内核和病毒技术的最04-04
·Real Player rmoc3260.d04-04·亿万网络今月最后为您提04-04
·php+mysql 5 sql inject04-03·Real Player rmoc3260.d04-03
·oblog文件下载漏洞04-03·免费啦提供1G-2G免费全能04-03
·完全解析网页后门和挂马04-02·一句话开3389(只测试过04-02
·萧萧免费空间网提供100M04-02·谷道免费空间网提供1G免04-01
·从本地入手解决双线路由03-31·sablog 1.6 多个跨站漏洞03-31
·富文本编辑器的跨站脚本03-31·Cookie注入是怎样产生的03-31
[推荐]用OllyDbg手脱RLPack V1.17加壳的DLL
      ★★★★★

用OllyDbg手脱RLPack V1.17加壳的DLL

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-4-4 7:12:13
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教
【调试环境】:WinXP、OllyDbg、PEiD、LordPE、ImportREC

【脱壳过程】:

RLPack是ap0x新出的一款压缩壳,这篇教程以RLPack V1.17完整版自带的iBox.dll演示RLPack加壳的DLL手动脱壳。
RLPack加壳的eXe脱壳方法可以参看我以前写的脚本
引用:
RLPack.Basic.Edition.V1.0b-V1.17+Full.Edition.V1.16-V1.17.UnPacK.Script
http://www.unpack.cn/viewthread.php?tid=9965

值得一提的是,RLPack V1.18越来越像RLProtect,其Code Splicing和Import Elimination是很多的

设置OllyDbg暂停在WinMain,忽略所有异常选项,开始吧
_____________________________________________________________
一.OEP

通常压缩壳加壳的DLL找OEP是比较简单的
DLL卸载时会再次从EP处运行,几个跳转后就会到OEP了

0094BEA0    807C24 08 01       cmp byte ptr ss:[esp+8],1
//进入OllyDBG后暂停在EP
0094BEA5    0F85 7E010000      jnz 0094C029
//这里在DLL卸载时会跳转,就是去OEP的捷径了

0094C029    E9 BE3AFAFF        jmp 008EFAEC
//这里就是跳OEP了


_____________________________________________
二.输入表

RLPack V1.1X Full Edition加壳exe文件会加密某些输入表,而加壳DLL则很少加密输入表的
BP GetProcAddress
Shift+F9,中断后取消断点,Alt+F9返回

0094BF57    56                 push esi
0094BF58    FF95 E3090000      call near dword ptr ss:[ebp+9E3] ; kernel32.LoadLibraryA
0094BF5E    8985 4E0A0000      mov dword ptr ss:[ebp+A4E],eax
0094BF64    85C0               test eax,eax
0094BF66    0F84 C2000000      je 0094C02E
0094BF6C    8BC6               mov eax,esi
0094BF6E    EB 5F              jmp short 0094BFCF
0094BF70    8B85 520A0000      mov eax,dword ptr ss:[ebp+A52]
0094BF76    8B00               mov eax,dword ptr ds:[eax]
0094BF78    A9 00000080        test eax,80000000
0094BF7D    74 14              je short 0094BF93
0094BF7F    35 00000080        xor eax,80000000
0094BF84    50                 push eax
0094BF85    8B85 520A0000      mov eax,dword ptr ss:[ebp+A52]
0094BF8B    C700 20202000      mov dword ptr ds:[eax],202020 ; UNICODE " Hercegovina"
0094BF91    EB 06              jmp short 0094BF99
0094BF93    FFB5 520A0000      push dword ptr ss:[ebp+A52]
0094BF99    FFB5 4E0A0000      push dword ptr ss:[ebp+A4E]
0094BF9F    FF95 E7090000      call near dword ptr ss:[ebp+9E7] ; kernel32.GetProcAddress
0094BFA5    85C0               test eax,eax
//返回这里
0094BFA7    0F84 81000000      je 0094C02E
0094BFAD    8907               mov dword ptr ds:[edi],eax ; ntdll.RtlDeleteCriticalSection
//填充系统函数地址
//EDI=008F3154        注意观察这个地址
0094BFAF    83C7 04            add edi,4
0094BFB2    8B85 520A0000      mov eax,dword ptr ss:[ebp+A52]
0094BFB8    EB 01              jmp short 0094BFBB
0094BFBA    40                 inc eax
0094BFBB    8038 00            cmp byte ptr ds:[eax],0
0094BFBE    75 FA              jnz short 0094BFBA
0094BFC0    40                 inc eax
0094BFC1    8985 520A0000      mov dword ptr ss:[ebp+A52],eax
0094BFC7    66:8178 02 0080    cmp word ptr ds:[eax+2],8000
0094BFCD    74 A1              je short 0094BF70
0094BFCF    8038 00            cmp byte ptr ds:[eax],0
0094BFD2    75 9C              jnz short 0094BF70
0094BFD4    EB 01              jmp short 0094BFD7
0094BFD6    46                 inc esi
0094BFD7    803E 00            cmp byte ptr ds:[esi],0
0094BFDA    75 FA              jnz short 0094BFD6
0094BFDC    46                 inc esi
0094BFDD    40                 inc eax
0094BFDE    8B38               mov edi,dword ptr ds:[eax]
0094BFE0    E8 4B000000        call 0094C030
0094BFE5    83C0 04            add eax,4
0094BFE8    8985 520A0000      mov dword ptr ss:[ebp+A52],eax
0094BFEE    803E 01            cmp byte ptr ds:[esi],1
0094BFF1    0F85 60FFFFFF      jnz 0094BF57
//循环处理输入表

现在来手动确定输入表的RVA和Size
在左下角的数据窗口Ctrl+G:008F3154,点右键->Long->Address
008F3150  00000000
008F3154  7C93188A  ntdll.RtlDeleteCriticalSection
008F3158  7C9210ED  ntdll.RtlLeaveCriticalSection
……
008F37E0  7D610EC0  shell32.ShellExecuteA
008F37E4  00000000
008F37E8  76337CD8
008F37EC  7632311E
008F37F0  00000000

输入表开始RVA=008F3154-00870000=00083154
输入表Size=008F37F0-008F3154=0000069C

[1] [2] 下一页

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886