好友
阅读权限10
听众
最后登录1970-1-1
|
【吾爱第四届动画大赛参赛作品】带狗脱阿拉丁加密狗hasp hl(srm)的壳
Hi,大家好,我是zhaohj
今天做的录像用BB做的,录像文件已在附件下载地址中。因为是商业软件,下面的文件名用xxxx代替。
codelive在http://www.52pojie.cn/thread-258182-1-1.html发表了以色列Aladdin HASP SRM(AES-128)加密狗破解经验分享
受到启发,他是用API HOOK的方法来破解的,本人菜鸟对hook技术不熟悉,只好用老方法脱壳。
使用工具:
od,peid,LordPE,ImportREC,CFF Explorer,Dll_LoadEx.exe,ReloX
大致流程:
1:代码段内存法到OEP,记录OEP、IAT地址
2:数据段内存法观察IAT未加密部分与加密部分,在适当的时候复制未加密的IAT到加密的IAT
3:找到关键的跳转
4:修复API及DLL文件的重定位修复
【吾爱第四届动画大赛参赛作品】带狗脱阿拉丁加密狗hasp hl(srm)的壳
by zhaohj
2015-01-18
====================
部分记录:到达OEP后,IAT部分加密的。
我们的目的是把IAT加密部分还原。
查壳:HASP HL Protection 1.X -> Aladdin *
先OD加载dll
1:先到OEP后看一下
ALT+M ,代码段下内存访问断点,到达OEP了,并打开ImportREC,查看一下IAT表
做一下记录,我这里已经做好了:
oep: 10061539 8BFF mov edi,edi
IAT:
10069000 size=A40
10069000 ~ 10069A40
看到了有很多无效的API
复制一份到文本
我们找一下另一方加密的IAT
ctrl_f12重启,在数据段下内存访问断点,数据窗口转IAT开头
这个时候IAT是未加密的,我们在10069410下硬件写入断点,记得删除内存访问断点,F9运行
看到了吗,这个时候是正常的,我们复制IAT到第二个加密的IAI
怎么找呢?
10069414对应1007B0BC,相差11CA8
另一份IAT:
10069034 0007C382 => 1007ACDC 0007C382 相差=11CA8
10069000+11CA8=1007ACA8
1007ACA8 ~ 1007B6E8 找到另一方加密的IAT,我们把未加密的数据复制到加密的地方。
下面的图是另一个版本的对照图,两个IAT表对应关系,FFFFFFFF表示加密的
二进制复制
记得删除内存访问断点
1032763E怎么来的,我后面讲,这里也是重点。
2:做好数据复制,并关键地址1032763E test eax,eax改成xor eax,eax后
直接在OEP下断点,F9运行
看到了吗,api基本修复了,还有3个未修复
3:lorepe,dumped
4: CFF Explorer.exe,删除壳段
打开节头部,删除.protect,删除节(头部和数据),保存
来到重建器,点重建,点保存
5:ImportREC.exe
修复3个API
GetProcAddress
GetCurrentProcessId
GetCurrentProcess
修复保存为xxxxdll-dumped_.dll
好了,关闭od,lorepe,ImportREC
6: 修复DLL重定位
a)未脱壳的dll复制两份为 “复件1 xxxxDLL.dll”、“复件2 xxxxDLL.dll”
Dll_LoadEx.exe打开“复件1 xxxxDLL.dll”、“复件2 xxxxDLL.dll”
b)lorepe,分别dumped为01.dll、02.dll,注意现在不要关闭
c)ReloX.exe,选择4个节,其余两个节取消
fix后保存为xxxxdll-dumped__.dll
7:ok啦,把xxxxdll-dumped__.dll改为原来的名字,工具可以全部关闭了。
看到成功了。
8:现在讲一下1032763E怎么来的,
到OEP后,我们看到很多加密的API,我们的想法是:
让 一个OD写入正确的API时下断进入正常的api,
让另一个od写入正确的API时下断进入错误的api,
看左边:
100690F8 7C92FE21 ntdll.RtlGetLastWin32Error
100690FC 7C92FE30 ntdll.RtlSetLastWin32Error
10069100 009F1C90
od1在100690F8下硬件写入断点,因为断下后下面是进入正常的api
od2再100690FC下硬件写入断点,因为断下后下面是进入错误的api
下好断点后,这时需要复制未加密的iat到加密的iat,再进行跟踪
简单演示一下,就这样跟踪下去,我直接1032763E
看到了吗,就是这个关键点。
好啦,教程结束,谢谢观看!
oep: 10061539 8BFF mov edi,edi
IAT:
10069000 size=A40
10069000 ~ 10069A40
另一份IAT:
10069034 0007C382 => 1007ACDC 0007C382 相差=11CA8
10069000+11CA8=1007ACA8
1007ACA8 ~ 1007B6E8
关键代码修改:
10327624 BA 01000000 mov edx,0x1
10327629 D3E2 shl edx,cl
1032762B 8B04B5 F83E3310 mov eax,dword ptr ds:[esi*4+0x10333EF>
10327632 66:3BF6 cmp si,si
10327635 23C2 and eax,edx
10327637 0F82 43B10000 jb TssdMfcD.10332780
1032763D F8 clc
1032763E 85C0 test eax,eax //改成xor eax,eax
10327640 0F82 85B30000 jb TssdMfcD.103329CB
10327646 ^ 0F85 9ADCFFFF jnz TssdMfcD.103252E6
1032764C 66:C1EF 40 shr di,0x40
10327650 8D6D 00 lea ebp,dword ptr ss:[ebp]
10327653 74 02 je short TssdMfcD.10327657
10327655 091E or dword ptr ds:[esi],ebx
10327657 68 74F93210 push TssdMfcD.1032F974
1032765C C3 retn
|
-
-
下载地址.txt
50 Bytes, 下载次数: 467, 下载积分: 吾爱币 -1 CB
参赛作品
-
-
原始视频.txt
48 Bytes, 阅读权限: 80, 下载次数: 43, 下载积分: 吾爱币 -1 CB
原始视频
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|