吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3017|回复: 13

[转载技术] 伪ASPACK脱壳

  [复制链接]
小强 发表于 2014-11-2 19:29 | 显示全部楼层 |阅读模式

伪ASPACK脱壳
作者:pklong007


大家好,本人刚遇到一个DLL,PEID查是ASPACK 2.12,但是这个是个伪装壳,大家可以试试,ESP定律断不下来,基本上确定这不是ASPACK,大家如果知道是什么壳的话可告知一下,小弟不胜感激。不多说,直接脱文
110F1001 >  60              pushad
110F1002    E8 03000000     call HelperIn.110F100A
110F1007  - E9 EB045D45     jmp 566C14F7
110F100C    55              push ebp
110F100D    C3              retn

pushad + call,很像ASPACK吧,接下来更像.
经过单步,我发现下GetModuleHandleA 可到很快到aspack壳的结尾,从API断点返回:

019F207A    8985 DC304400   mov dword ptr ss:[ebp+0x4430DC],eax                ; kernel32.77230000
019F2080    8BF8            mov edi,eax
019F2082    8D9D ED304400   lea ebx,dword ptr ss:[ebp+0x4430ED]
019F2088    53              push ebx
019F2089    50              push eax
019F208A    FF95 E8314400   call dword ptr ss:[ebp+0x4431E8]
019F2090    8985 79294400   mov dword ptr ss:[ebp+0x442979],eax
019F2096    8D9D FA304400   lea ebx,dword ptr ss:[ebp+0x4430FA]
019F209C    53              push ebx
019F209D    57              push edi
019F209E    FF95 E8314400   call dword ptr ss:[ebp+0x4431E8]

不过大家注意,反回时不一定是19xxxxx这样的地址,因为这里是virtualAlloc分配的空间的
接着F8一直往下走,直到
019F20FB    FF95 7D294400   call dword ptr ss:[ebp+0x44297D]
019F2101    8D85 512C4400   lea eax,dword ptr ss:[ebp+0x442C51]
019F2107    50              push eax
019F2108    C3              retn
retn返回,继续F8:
019F2390    0BC9            or ecx,ecx
019F2392    74 1C           je X019F23B0
019F2394    78 1A           js X019F23B0
019F2396    AC              lods byte ptr ds:[esi]
019F2397    3C E8           cmp al,0xE8
019F2399    74 08           je X019F23A3
019F239B    3C E9           cmp al,0xE9
019F239D    74 04           je X019F23A3
019F239F    43              inc ebx
019F23A0    49              dec ecx
019F23A1  ^ EB ED           jmp X019F2390
019F23A3    291E            sub dword ptr ds:[esi],ebx


这里的jmp是往上跳的,我们F4跳到下面019f23a3的位置,继续F8往下走,每遇到跳转是向上跳的话都用F4跳到下面,
直到:
019F25C1    61              popad
019F25C2    75 08           jnz X019F25CC
019F25C4    B8 01000000     mov eax,0x1
019F25C9    C2 0C00         retn 0xC
019F25CC    68 280F9E01     push 0x19E0F28
019F25D1    C3              retn


ASPACK返回的伪OEP
这里跳ASPACK的走到OEP的指令是一样的,因此,一开始我还以为OEP是19E0F28这里,而且这里也可以看到有API的调用,但是这样的不是DLL的地址空间,IAT修复也就没法完成。于是在群里问了些人,有人说这不是OEP,得继续跟下去,直至到达DLL的地址空间才是,于是我想,这个用VirtualAlloc分配临时空间把代码运行到这里,一定得VirtualFree释放,于是
下个virtualFree的断点,不过这种方法比较麻烦,不能很快到OEP,有好方法的同学们可告知我一下,感谢大家。
下好断点后我一直F9运行,直到栈显示的地址接近DLL的地址空间为址(这要按很多次F9,累啊)
这时栈显示是这样的:
0012EEE0   019CB594  /CALL 到 VirtualFree 来自 019CB592
0012EEE4   01950000  |Address = 01950000
0012EEE8   00000000  |Size = 0
0012EEEC   00008000  \FreeType = MEM_RELEASE
0012EEF0   019DABE5  返回到 019DABE5 来自 019CB580
0012EEF4   11000000  HelperIn.11000000                                   DLL基址
0012EEF8   0012FC2C
0012EEFC   110F1834  HelperIn.110F1834

于是在按2-3次F9,栈显示
0012FB24   01A61657  /CALL 到 VirtualFree 来自 01A61652
0012FB28   01AD4000  |Address = 01AD4000
0012FB2C   00040000  |Size = 40000 (262144.)
0012FB30   00004000  \FreeType = MEM_DECOMMIT
0012FB34   01AD4000
0012FB38   01AC0000
0012FB3C   0012FB70
0012FB40   01B14000

这里是最后一个VirtualFree,就在这里返回,应该很接近真OEP了
这时我们取消断点返回,后面F8跟下去,这样就可以到真正的OEP了,这个过程中有些花指令。
直至这里:
01A4FAAB    A1 58B6A501     mov eax,dword ptr ds:[0x1A5B658]
01A4FAB0    E8 5F31FCFF     call 01A12C14
01A4FAB5    A1 9C2BA501     mov eax,dword ptr ds:[0x1A52B9C]
01A4FABA    C600 E3         mov byte ptr ds:[eax],0xE3
01A4FABD    8BD4            mov edx,esp
01A4FABF    A1 94B6A501     mov eax,dword ptr ds:[0x1A5B694]
01A4FAC4    E8 23B9FFFF     call 01A4B3EC
01A4FAC9    E8 8E3CFFFF     call 01A4375C                                      ; F7进入
01A4FACE    E8 61EDFFFF     call 01A4E834                                      ; F7进入


有3个连续的CALL,这里第2个开始就要F7进入了,一直F7(方法较笨,求更好方法)
02B50106    61              popad
02B50107  - FFE0            jmp eax                                            ; HelperIn.1100AB30

这里就是真正的OEP了,修复不说了,大家都懂,这是个VB 的DLL:D:

不过可以搜特征码popad jmp eax 来搜,不过我想有更好的下API或下内存镜像断点的方法,请各位指教,第一次写脱文,且还是临记,大家见谅。

评分

参与人数 22HB +22 THX +13 收起 理由
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
29590 + 1
24567 + 1
Jawon + 1
一路走来不容易 + 1
Soul1999 + 1
Wayne + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
极速菜 + 1
娄胖胖 + 1
sjtkxy + 1 + 1
boot + 1
冷亦飞 + 1
消逝的过去 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
叶落花开 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
y_jiping + 1
baky1223 + 2
jaunic + 1
hnymsh + 1
zx2cwf + 5 我很赞同!
rain灿 + 5 + 1 卧槽我不能扣分

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
起凡第一华佗 发表于 2014-11-2 20:21 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zx2cwf 发表于 2014-11-2 21:11 | 显示全部楼层

老夫看你骨骼惊奇,根骨奇佳乃是百年不遇的练武奇才

固回一帖
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
BattleHeart 发表于 2014-11-4 22:38 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
王尼玛 发表于 2014-11-4 22:41 | 显示全部楼层

感谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
520Kelly 发表于 2014-11-19 16:34 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
行行行行行行 发表于 2022-3-31 14:26 | 显示全部楼层


[快捷回复]-感谢楼主热心分享!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-6-14 02:33 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
凌夏随缘 发表于 2022-6-17 14:11 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
冷亦飞 发表于 2022-10-10 00:45 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表