- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
取CPU-ID 后8位作为机器码 Patch一下 来固定其机器码 下面来看一下具体过程
调试得 生成硬件码的函数在此:
0051B35C /$ 55 PUSH EBP ; CPUid
0051B35D |. 8BEC MOV EBP,ESP
局部调用来自 004F8CC1, 004F8CCD, 004F8DCE, 004F8DDA, 00519795, 005197A1
从调用上大约可以看出来 程序启动、注册验证、或者功能验证都要从此函数中获取CPUID
0051B3B9 |. E8 66E1EEFF CALL Course.00409524 ; 取第一组ID
0051B3BE |. FF75 E0 PUSH DWORD PTR SS:[EBP-20]
0051B3C1 |. 68 54B45100 PUSH Course.0051B454
0051B3C6 |. 8D4D DC LEA ECX,DWORD PTR SS:[EBP-24]
0051B3C9 |. BA 08000000 MOV EDX,8
0051B3CE |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0051B3D1 |. E8 4EE1EEFF CALL Course.00409524 ; 取第二组ID
0051B3D6 |. FF75 DC PUSH DWORD PTR SS:[EBP-24]
0051B3D9 |. 68 54B45100 PUSH Course.0051B454
0051B3DE |. 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
0051B3E1 |. BA 08000000 MOV EDX,8
0051B3E6 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051B3E9 |. E8 36E1EEFF CALL Course.00409524 ; 取第三组ID
0051B3EE |. FF75 D8 PUSH DWORD PTR SS:[EBP-28]
0051B3F1 |. 68 54B45100 PUSH Course.0051B454
0051B3F6 |. 8D4D D4 LEA ECX,DWORD PTR SS:[EBP-2C]
0051B3F9 |. BA 08000000 MOV EDX,8
0051B3FE |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0051B401 |. E8 1EE1EEFF CALL Course.00409524 ; 取第四组ID
0051B406 |. FF75 D4 PUSH DWORD PTR SS:[EBP-2C] ; 这里来Patch代码
0051B409 |. 8BC3 MOV EAX,EBX
0051B40B |. BA 07000000 MOV EDX,7
0051B410 |. E8 8F9AEEFF CALL Course.00404EA4
0051B415 |. EB 0C JMP SHORT Course.0051B423
0051B417 |> 8BC3 MOV EAX,EBX
0051B419 |. BA 60B45100 MOV EDX,Course.0051B460 ; ASCII "CPUID not available"
0051B41E |. E8 5D97EEFF CALL Course.00404B80
通过跟踪 发现第四组数据是我们所需要的 也就是程序取的硬件码的数据
在这里我们Patch出来写代码:
0051B406 |. FF75 D4 PUSH DWORD PTR SS:[EBP-2C] // jmp 0052D1FC
0051B409 |. 8BC3 MOV EAX,EBX
0051B40B |. BA 07000000 MOV EDX,7
固定机器码代码如下:
0052D1FC 8B4D D4 MOV ECX,DWORD PTR SS:[EBP-2C] // 指针给 ECX 寄存器
0052D1FF 36:C701 4348494E MOV DWORD PTR SS:[ECX],4E494843 // 赋值 内存替换ID
0052D206 36:C741 04 41505947 MOV DWORD PTR SS:[ECX+4],47595041
0052D20E 33C9 XOR ECX,ECX
0052D210 FF75 D4 PUSH DWORD PTR SS:[EBP-2C]
0052D213 8BC3 MOV EAX,EBX
0052D215 ^ E9 F1E1FEFF JMP Course.0051B40B
如果不脱壳的话 那就SMC一下 :-)
006655A9 C705 FCD15200 8B4DD436 MOV DWORD PTR DS:[52D1FC],36D44D8B
006655B3 C705 00D25200 C7014348 MOV DWORD PTR DS:[52D200],484301C7
006655BD C705 04D25200 494E36C7 MOV DWORD PTR DS:[52D204],C7364E49
006655C7 C705 08D25200 41044150 MOV DWORD PTR DS:[52D208],50410441
006655D1 C705 0CD25200 594733C9 MOV DWORD PTR DS:[52D20C],C9334759
006655DB C705 10D25200 FF75D48B MOV DWORD PTR DS:[52D210],8BD475FF
006655E5 C705 14D25200 C3E9F1E1 MOV DWORD PTR DS:[52D214],E1F1E9C3
006655EF 66:C705 18D25200 FEFF MOV WORD PTR DS:[52D218],0FFFE
006655F8 C705 06B45100 E9F11D01 MOV DWORD PTR DS:[51B406],11DF1E9
00665602 C605 0AB45100 00 MOV BYTE PTR DS:[51B40A],0
00665609 ^ E9 ACFDFFFF JMP Course_.006653BA
key 保存在这里 : HKEY_LOCAL_MACHINE\SOFTWARE\TbExc
然后将注册信息在Loader中导入一下即可 :-) 以上只是一个固定机器码的思路和方法 欢迎大家更多的深入讨论
练习软件下载:http://www.skycn.com/soft/48682.html |
|