一个程序按教程操作。
OD打开样本,下断点LoadLibraryA,第一个中断:
直接去该文件目录下把这个文件复制出来,
文件路径:C:\Documents and Settings\Administrator\Local Settings\Temp
或者load完直接DUMP出来也可,
虽然默认名字为 V220110518.EPE 或 V220101109.EPE,但是很明显这是个dll文件,用stud PE之类的PE分析软件打开,可以看到其输入输出表。输出函数只有EncryptPE_Init 。但是没关系,通过后面的跟踪我们知道机器码的生成和验证都是在这个dll里面,只要HOOK LoadLibraryA我们就可以获得这个dll的基地址(XP系统中这个基地址基本没变过)。
接着下断点DeviceIoControl,对于机器码这个断点是必须首先考虑的(如获得硬盘参数等)。
不断地F9,终于断在我们想要的地方了:
单步返回,已经慢慢靠近机器码生成的代码了:
711AB659 55 push ebp
711AB65A 68 06B71A71 push 711AB706
711AB65F 64:FF30 push dword ptr fs:[eax]
711AB662 64:8920 mov dword ptr fs:[eax], esp
711AB665 8BC3 mov eax, ebx
711AB667 E8 40FDFFFF call 711AB3AC //获得了硬盘ID
711AB66C 8B03 mov eax, dword ptr [ebx] //硬盘ID已经出现
711AB66E 8945 FC mov dword ptr [ebp-4], eax
711AB671 8B45 FC mov eax, dword ptr [ebp-4]
711AB674 85C0 test eax, eax
返回之后一整段就是对硬盘ID的加密:
711F94B7 50 push eax
711F94B8 8B45 F8 mov eax, dword ptr [ebp-8]
711F94BB 33C3 xor eax, ebx
711F94BD 3345 F4 xor eax, dword ptr [ebp-C]
711F94C0 33D2 xor edx, edx
711F94C2 52 push edx
711F94C3 50 push eax
711F94C4 8D55 B8 lea edx, dword ptr [ebp-48]
711F94C7 B8 08000000 mov eax, 8
711F94CC E8 6311F3FF call 7112A634
711F94D1 8B55 B8 mov edx, dword ptr [ebp-48]
711F94D4 8BC6 mov eax, esi
711F94D6 59 pop ecx
711F94D7 E8 4CC3F2FF call 71125828
单步返回后获得ID加密值:
711FE669 50 push eax
711FE66A 8D95 3CFAFFFF lea edx, dword ptr [ebp-5C4]
711FE670 8B85 74FFFFFF mov eax, dword ptr [ebp-8C]
711FE676 8B80 90040000 mov eax, dword ptr [eax+490]
711FE67C E8 6BABFFFF call 711F91EC
711FE681 8B85 3CFAFFFF mov eax, dword ptr [ebp-5C4] ; //硬盘ID加密值
//生成3段机器码,并拼装在一起。
711F984E 8BC6 mov eax, esi
711F9850 33D2 xor edx, edx
711F9852 52 push edx
711F9853 50 push eax
711F9854 8D55 B8 lea edx, dword ptr [ebp-48]
711F9857 B8 08000000 mov eax, 8
711F985C E8 D30DF3FF call 7112A634
711F9861 FF75 B8 push dword ptr [ebp-48]
711F9864 8B45 F4 mov eax, dword ptr [ebp-C]
711F9867 33D2 xor edx, edx
711F9869 52 push edx
711F986A 50 push eax
711F986B 8D55 B4 lea edx, dword ptr [ebp-4C]
711F986E B8 08000000 mov eax, 8
711F9873 E8 BC0DF3FF call 7112A634
711F9878 FF75 B4 push dword ptr [ebp-4C]
711F987B 8B45 F0 mov eax, dword ptr [ebp-10]
711F987E 33D2 xor edx, edx
711F9880 52 push edx
711F9881 50 push eax
711F9882 8D55 B0 lea edx, dword ptr [ebp-50]
711F9885 B8 08000000 mov eax, 8
711F988A E8 A50DF3FF call 7112A634
711F988F FF75 B0 push dword ptr [ebp-50]
711F9892 8BC3 mov eax, ebx
711F9894 BA 03000000 mov edx, 3
711F9899 E8 06C0F2FF call 711258A4
711F989E 33C0 xor eax, eax //机器码全部拼装完毕
好了,到这里我们的过注册基本已经完成了,没错,只要HOOK 生成机器码的点即可。
按这个教程上面的,只玩到DeviceIoControl 在按ALT+F9就不知怎么操作了。
附件是样本。
[课程]FART 脱壳王!加量不加价!FART作者讲授!