修改带KEY的ARM双进程的硬件指纹
【破文标题】修改带KEY的ARM双进程的硬件指纹【破文作者】PYG学员:jy2207661
【作者主页】https://www.chinapyg.com/
【破解工具】OD,PEID,Armadillo Find Protected
【破解平台】XP
------------------------------------------------------------------------
【破解过程】
1.用PEID 查一下,显示为 Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks的壳
2.用Armadillo Find Protected查一下,显示如下:
!- 目标为Armadillo保护
!- 保护系统级别为 (专业版)
!- <所用到的保护模式有>
屏蔽调试器
双进程模式
防止内存补丁模式
!- <备份密钥设置>
固定的备份密钥
!- <目标程序压缩设置>
最好 / 最慢的压缩方式
!- <其它保护设置>
48029E80 Version X.X 14-04-2008
3.必须要有一个正确的KEY、用户名和对应的机器码才行:
硬件ID:8043B310
用户名:恨雨不潇
KEY :000014-3K0Q3G-4ZAUTW-T38UX0-XJ92QC-6MBG8N-QJ08F5-TGHH5T-TP8FFH-5V8BUC
在我机器上显示的硬件ID为:16CD5933
4.用OD载入目标程序,设置Ollydbg忽略所有异常,用IsDebug 1.4插件去掉Ollydbg的调试器标志。我在这里倫赖了,直接用《转单进程脚本.oSc》把程序转为单进程。
5.Shift+F9 运行,直到程序提示:This program requires a security key. If you have one, select OK to enter it. After entering a valid key, you will not be prompted again.按 OK 按钮让程序弹出输入 KEY 的对话框,下断点BP GetDlgItem,切换到程序输入正确的名字和 KEY 后按 OK 按钮。断下后看堆栈提示
00128088 00C244FC/CALL 到 GetDlgItem 来自 00C244FA
0012808C 000607F0|hWnd = 000607F0 ('Enter Key',class='#32770')
00128090 00000407\ControlID = 407 (1031.)
6.ALT+F9 返回程序领空
00C244FC 85C0 TEST EAX,EAX ; 返回到此处
00C244FE 74 33 JE SHORT 00C24533
7.在反汇编窗口右键->查找->所有参考文本字串,搜索ENHFINGERPRINT,在搜索到的行上右键->反汇编窗口跟随
0307D5E1 68 60980A03 PUSH 30A9860 ; ASCII "DATELASTRUN"
0307D5E6 8D8F 4C240000 LEA ECX,DWORD PTR DS:
0307D5EC E8 F58BFFFF CALL 030761E6
0307D5F1 53 PUSH EBX
0307D5F2 8BCF MOV ECX,EDI
0307D5F4 E8 BAACFFFF CALL 030782B3 ; 这个CALL是关键,加车跟随
0307D5F9 8BC8 MOV ECX,EAX
0307D5FB BB C4960A03 MOV EBX,30A96C4 ; ASCII "%04X-%04X"
0307D600 81E1 FFFF0000 AND ECX,0FFFF
0307D606 C1E8 10 SHR EAX,10
0307D609 51 PUSH ECX
0307D60A 50 PUSH EAX
0307D60B 8D85 E0FDFFFF LEA EAX,DWORD PTR SS:
0307D611 53 PUSH EBX
0307D612 50 PUSH EAX
0307D613 FFD6 CALL ESI
0307D615 83C4 10 ADD ESP,10
0307D618 8D85 E0FDFFFF LEA EAX,DWORD PTR SS:
0307D61E 8D8F 4C240000 LEA ECX,DWORD PTR DS:
0307D624 6A 00 PUSH 0
0307D626 50 PUSH EAX
0307D627 68 54980A03 PUSH 30A9854 ; ASCII "FINGERPRINT"
0307D62C E8 4B8BFFFF CALL 0307617C
0307D631 6A 00 PUSH 0
0307D633 8BCF MOV ECX,EDI
0307D635 E8 97ACFFFF CALL 030782D1
0307D63A 8BC8 MOV ECX,EAX
0307D63C 81E1 FFFF0000 AND ECX,0FFFF
0307D642 C1E8 10 SHR EAX,10
0307D645 51 PUSH ECX
0307D646 50 PUSH EAX
0307D647 8D85 E0FDFFFF LEA EAX,DWORD PTR SS:
0307D64D 53 PUSH EBX
0307D64E 50 PUSH EAX
0307D64F FFD6 CALL ESI
0307D651 83C4 10 ADD ESP,10
0307D654 8D85 E0FDFFFF LEA EAX,DWORD PTR SS:
0307D65A 8D8F 4C240000 LEA ECX,DWORD PTR DS:
0307D660 6A 00 PUSH 0
0307D662 50 PUSH EAX
0307D663 68 44980A03 PUSH 30A9844 ; ASCII "ENHFINGERPRINT",来到这行,向上看
0307D668 E8 0F8BFFFF CALL 0307617C
0307D66D 6A 00 PUSH 0
0307D66F 8BCF MOV ECX,EDI
0307D671 E8 E3010000 CALL 0307D859
8.跟随0307D5F处的CALL后,来到这里
030782B3 56 PUSH ESI ;在此行下断,F2
030782B4 8BF1 MOV ESI,ECX
030782B6 FF7424 08 PUSH DWORD PTR SS:
030782BA 8B8E 5C060000 MOV ECX,DWORD PTR DS:
030782C0 6A 00 PUSH 0
030782C2 E8 24D70000 CALL 030859EB ;ID的出现是由这个CALL产生的,跟随
030782C7 3386 5C200000 XOR EAX,DWORD PTR DS: ;当程序走到这行时,EAX中便出现我的ID
030782CD 5E POP ESI
030782CE C2 0400 RETN 4
9.跟随030782C2处的CALL后,来到这里
030859EB 8B4424 04 MOV EAX,DWORD PTR SS:
030859EF C1E0 06 SHL EAX,6
030859F2 034424 08 ADD EAX,DWORD PTR SS:
030859F6 8B4481 18 MOV EAX,DWORD PTR DS:
030859FA 35 8AC0E665 XOR EAX,65E6C08A ;把此行改为JMP 401000,到401000处进行代码修改
030859FF C2 0800 RETN 8
10.从00401000写入如下代码
00401000 35 8AC0E665 XOR EAX,65E6C08A
00401005 3D 3359CD16 CMP EAX,16CD5933 ;16CD5933是我的机器ID
0040100A 75 05 JNZ SHORT 00401011
0040100C B8 10B34380 MOV EAX,8043B310 ;8043B310 是欲修改的正确的ID
00401011 C2 0800 RETN 8
二进制代码为:
35 8A C0 E6 65 3D 33 59 CD 16 75 05 B8 10 B3 43 80 C2 08 00
11.好了,写好代码之后,就一直F9,直到程序提示注册,点YES,发现机器码已经变成8043-B310了,输入那个正确的用户名和KEY后,程序提示注册成功了,到此全部搞定。
[ 本帖最后由 jy2207661 于 2008-8-6 20:32 编辑 ] 好文啊,学习了。 有视频教程吗????????????
页:
[1]