Armadillo_CopyMemII保护Key注册+脱壳笔记
 

破文作者:unppnu
发表时间:2006-12-12 14:09
链接地址:http://www.unpack.cn/viewthread.php?tid=8799

      

本脱壳过程得到cyto、810030大侠的帮助,表示感谢。本笔记没有技术含量,仅仅面向初学者,大侠飘过。

一、key注册。 ==================================================================================================== 00B2BC43 55 push ebp ; 程序入口点 00B2BC44 8BEC mov ebp,esp 00B2BC46 6A FF push -1 00B2BC48 68 904FB500 push GraspNet.00B54F90 00B2BC4D 68 80B9B200 push GraspNet.00B2B980 00B2BC52 64A1 00000000 mov eax,dword ptr fs[0] 00B2BC58 50 push eax 00B2BC59 648925 00000000 mov dword ptr fs[0],esp 00B2BC60 83EC 58 sub esp,58 00B2BC63 53 push ebx 00B2BC64 56 push esi 00B2BC65 57 push edi 00B2BC66 8965 E8 mov dword ptr ss[ebp-18],esp 00B2BC69 FF15 88F1B400 call dword ptr ds[&KERNEL32.GetV; kernel32.GetVersion --------------------------------------------------------------------------------------------------- 把fly大侠的脚本剽窃了其中的转单进程部分。

转单进程脚本 msg 请忽略所有异常,并添加忽略C000001E异常,然后运行本脚本! gpa OpenMutexA,kernel32.dll bp $RESULT esto exec pushad pushfd push edx xor eax,eax push eax push eax call kernel32.CreateMutexA popfd popad jmp kernel32.OpenMutexA ende bc eip msg 现已转换成单进程! ret

===运行转单进程脚本===

7C80EC1B 8BFF mov edi,edi ; 转换成单进程,停在这里。 7C80EC1D 55 push ebp 7C80EC1E 8BEC mov ebp,esp 7C80EC20 51 push ecx 7C80EC21 51 push ecx 7C80EC22 837D 10 00 cmp dword ptr ss[ebp+10],0 7C80EC26 56 push esi 7C80EC27 0F84 7A500300 je kernel32.7C843CA7 7C80EC2D 64A1 18000000 mov eax,dword ptr fs[18] 7C80EC33 FF75 10 push dword ptr ss[ebp+10] 7C80EC36 8DB0 F80B0000 lea esi,dword ptr ds[eax+BF8] 7C80EC3C 8D45 F8 lea eax,dword ptr ss[ebp-8] 7C80EC3F 50 push eax 7C80EC40 FF15 8C10807C call dword ptr ds[&ntdll.RtlInit; ntdll.RtlInitAnsiString

F9运行,"key required"提示弹出,点击“OK”。

堆栈中找到: 0012EB28 01669748 ASCII "Key"

在反汇编窗口: Ctrl+G: 01669748

查找Arm特征代码: Ctrl+B:35 8AC0E665 //Arm特征代码。

找到这里: 01645CD3 8B4424 04 mov eax,dword ptr ss:[esp+4] 01645CD7 C1E0 06 shl eax,6 01645CDA 034424 08 add eax,dword ptr ss:[esp+8] 01645CDE 8B4481 18 mov eax,dword ptr ds:[ecx+eax*4+18> 01645CE2 35 8AC0E665 xor eax,65E6C08A ; Arm特征代码。 01645CE7 C2 0800 retn 8

测试了N个Arm需要key注册的软件,都有这行代码。 =============================================================================== 01645CE2 35 8AC0E665 xor eax,65E6C08A ; Arm特征代码。 =============================================================================== 在01645CE2下断,F9运行,断下。 再F8一次,停在01645CE7行,注意积存器中eax的值,是本地机器的硬件码,我这里是719EEDDD,既Enter Key界面中的719E-EDDD。

双击积存器eax,修改eax=可用Key的硬件号。

F9运行,弹出Key valid, 显示:Key is valid, and has been stored。

现在Key有效,已经保存在本地,成功!

想看看它到底保存在那里,搜索注册表、监视文件夹,没有找到。

感谢8100303大侠的指点,原来是Arm的注册方式保存。用Trial-Reset v3.0 RC3 搜索,找到这些键值已经加密,所以就没有深入分析。 ====================================================================================================

二、脱壳 这时候,原来Arm需要一个可用key才能运行的软件,因为Arm注册方式的保存,和一般的Arm加壳软件一样了。 注意的是现在别用Trial-Reset v3.0 RC3来清理,否则,又回到“旧社会”了。打开dilloDIE,脱壳让它去完成吧。

上一篇   下一篇