|
00437FEE |. 83C4 08 add esp,8
00437FF1 |. FF8D 68FFFFFF dec dword ptr ss:[ebp-98]
00437FF7 |. 8D45 E8 lea eax,dword ptr ss:[ebp-18]
00437FFA |. BA 02000000 mov edx,2
00437FFF |. E8 CCF40A00 call <屏录专家.@System@AnsiString@$bdtr$qqrv>
00438004 |. 33C9 xor ecx,ecx
00438006 |. 898D 3CFFFFFF mov dword ptr ss:[ebp-C4],ecx
0043800C |> 8B85 3CFFFFFF /mov eax,dword ptr ss:[ebp-C4]
00438012 |. 0FBE9405 18FFFFFF |movsx edx,byte ptr ss:[ebp+eax-E8];[ebp+eax-0E8h]=temp_D
0043801A |. 8B8D 3CFFFFFF |mov ecx,dword ptr ss:[ebp-C4]
00438020 |. 0FBE840D D0FEFFFF |movsx eax,byte ptr ss:[ebp+ecx-130];[ebp+ecx-130]=注册码
00438028 |. 83C0 EC |add eax,-14
0043802B |. 3BD0 |cmp edx,eax
0043802D |. 75 5D |jnz short 屏录专家.0043808C
| |
0043802F |. 83BD 3CFFFFFF 03 |cmp dword ptr ss:[ebp-C4],3;是不是第5位
00438036 |. 75 45 |jnz short 屏录专家.0043807D;不是第5位
| |
00438038 |. 8B95 40FFFFFF |mov edx,dword ptr ss:[ebp-C0];[ebp-C0]=temp_H
0043803E |. 81C2 444D0000 |add edx,4D44
00438044 |. 8995 CCFEFFFF |mov dword ptr ss:[ebp-134],edx
0043804A |. DB85 CCFEFFFF |fild dword ptr ss:[ebp-134]
00438050 |. DC0D A4894300 |fmul qword ptr ds:[4389A4] ;3.14
00438056 |. DB2D AC894300 |fld tbyte ptr ds:[4389AC] ;1.59489633173843711e-1
0043805C |. DEC9 |fmulp st(1),st
0043805E |. E8 25830A00 |call <屏录专家.@_ftol$qv> ;eax=st
00438063 |. 8985 40FFFFFF |mov dword ptr ss:[ebp-C0],eax
00438069 |. 8B85 40FFFFFF |mov eax,dword ptr ss:[ebp-C0]
0043806F |. B9 A0860100 |mov ecx,186A0
00438074 |. 99 |cdq
00438075 |. F7F9 |idiv ecx
00438077 |. 8995 40FFFFFF |mov dword ptr ss:[ebp-C0],edx ;edx:余数
| |
0043807D |> FF85 3CFFFFFF |inc dword ptr ss:[ebp-C4]
00438083 |. 83BD 3CFFFFFF 05 |cmp dword ptr ss:[ebp-C4],5 ;loop 5 次
0043808A |.^ 7C 80 \jl short 屏录专家.0043800C
0043808C |> 83BD 3CFFFFFF 05 cmp dword ptr ss:[ebp-C4],5 ;是不是第5位
00438093 |. 0F8C AD080000 jl 屏录专家.00438946 ;小于5失败
以下检查第5位:
00438099 |. 8B85 40FFFFFF mov eax,dword ptr ss:[ebp-C0]
0043809F |. B9 0A000000 mov ecx,0A
004380A4 |. 99 cdq
004380A5 |. F7F9 idiv ecx
004380A7 |. 8B85 3CFFFFFF mov eax,dword ptr ss:[ebp-C4]
004380AD |. 0FBE8C05 D0FEFFFF movsx ecx,byte ptr ss:[ebp+eax-130];[ebp+eax-130]=第5位注册码
004380B5 |. 83C1 BF add ecx,-41
004380B8 |. 2BCA sub ecx,edx ;edx通过对temp_H计算得到
004380BA |. 898D 38FFFFFF mov dword ptr ss:[ebp-C8],ecx
004380C0 |. 83BD 38FFFFFF 00 cmp dword ptr ss:[ebp-C8],0
004380C7 |. 74 0D je short 屏录专家.004380D6 ;成功
004380C9 |. 83BD 38FFFFFF 05 cmp dword ptr ss:[ebp-C8],5
004380D0 |. 0F85 25080000 jnz 屏录专家.004388FB ;失败
static char s[14]="xxxxxx"//注册码
int count
int buffer
for count=0 to 5 do
{ cmp temp_D[count],(s[count]-14)
jnz fail
if count=3 do {
buffer=mod(((temp_H+4d44h)*3.14*1.59489633173843711e-1)/186a0h)
}
}
buffer=s[count]-41-mod(buffer/0ah)
if buffer=0 or buffer=5 jmp succeed
fail:
succeed:
;******************************************************************************************
成功:
004380D6 |> 66:C785 5CFFFFFF 4400 mov word ptr ss:[ebp-A4],44
004380DF |. BA 5AB85000 mov edx,屏录专家.0050B85A
004380E4 |. 8D45 E4 lea eax,dword ptr ss:[ebp-1C]
004380E7 |. E8 ACF10A00 call <屏录专家.sub_4E7298>
004380EC |. FF85 68FFFFFF inc dword ptr ss:[ebp-98]
004380F2 |. 8B00 mov eax,dword ptr ds:[eax]
004380F4 |. E8 472E0500 call <屏录专家.@Dialogs@ShowMessage$qqrx17System@AnsiString>
004380F9 |. FF8D 68FFFFFF dec dword ptr ss:[ebp-98]
004380FF |. 8D45 E4 lea eax,dword ptr ss:[ebp-1C]
00438102 |. BA 02000000 mov edx,2
不建议爆破,因为通过注册后他会把注册明肯注册码保存在pmlxzj.dll文件里,再次起动时会再检查,
C:\windows\pmlxzj.dll
我的机器码为"38289378",输入注册名为“123"
下断点在:
0043800C |> 8B85 3CFFFFFF /mov eax,dword ptr ss:[ebp-C4]
00438012 |. 0FBE9405 18FFFFFF |movsx edx,byte ptr ss:[ebp+eax-E8];[ebp+eax-0E8h]=temp_D
可见[ebp+eax-E8]指向"31 33 36 33 30 00"
可得:
31h+14h=45h->"E"
33h+14h=49h->"G"
36h+14h=4Ah->"K"
33h+14h=49h->"G"
30h+14h=44h->"D"
"EGKGD"为前5位注册码
再下断点在:
004380AD |. 0FBE8C05 D0FEFFFF movsx ecx,byte ptr ss:[ebp+eax-130];[ebp+eax-130]=第5位注册码
004380B5 |. 83C1 BF add ecx,-41
004380B8 |. 2BCA sub ecx,edx
可得到edx=1
所以第5位注册码为:1+41h=44h->"B" 或1+41h+5=49h->"G" 我的注册码为"EGKGDB"或"EGKGDG"
但是,一般用后面的比较好~ ,因为后面的支持未来版本,
此外,我们用这种方法注册后,我们做出来的所有东西除了.exe 得录像之外都没有问题了,关键还在
play.dat 里面的算法,是这 6位注册码后面的东西,因为我没有调试,所以用 空格填充的话,我们的
自定义版权
出不来的,即使出来了也不能改字体,字号~ 所以我们还要分析一下 play.dat 里面的构造~
00402DF1 |. 66:C785 18FFF>mov word ptr ss:[ebp-E8], 44
00402DFA |> 8D95 FCFEFFFF lea edx, dword ptr ss:[ebp-104]
00402E00 |. B9 04000000 mov ecx, 4
00402E05 |. 8B85 04FFFFFF mov eax, dword ptr ss:[ebp-FC]
00402E0B |. 8B80 78140000 mov eax, dword ptr ds:[eax+1478]
00402E11 |. 8B18 mov ebx, dword ptr ds:[eax]
00402E13 |. FF53 04 call dword ptr ds:[ebx+4]
00402E16 |> 8B85 04FFFFFF mov eax, dword ptr ss:[ebp-FC]
00402E1C |. 80B8 54140000>cmp byte ptr ds:[eax+1454], 0 上面是分析 注册码的,比较后,
00402E23 |. 0F85 88000000 jnz 复件_Pla.00402EB1 ------------- 这里要跳,所以改成 jmp play.00402EB1
00402E29 |. 66:C785 18FFF>mov word ptr ss:[ebp-E8], 5C
00402E32 |. BA 4A244800 mov edx, 复件_Pla.0048244A
00402E37 |. 8D45 8C lea eax, dword ptr ss:[ebp-74]
00407086 . E8 016E0100 call 复件_Pla.0041DE8C
0040708B . 8B8D 68FFFFFF mov ecx, dword ptr ss:[ebp-98]
00407091 . 8981 70140000 mov dword ptr ds:[ecx+1470], eax
00407097 . 8B85 68FFFFFF mov eax, dword ptr ss:[ebp-98]
0040709D . 80B8 54140000>cmp byte ptr ds:[eax+1454], 0 上面又是分析 注册码的,比较后
004070A4 . 0F85 42010000 jnz 复件_Pla.004071EC ------------ 这里也要跳,改成 jnz play.004071EC
004070AA . 8B95 68FFFFFF mov edx, dword ptr ss:[ebp-98]
004070B0 . 8B82 70140000 mov eax, dword ptr ds:[edx+1470]
004070B6 . BA 14000000 mov edx, 14
004070BB . E8 40720100 call 复件_Pla.0041E300
004070C0 . 8D85 27FFFFFF lea eax, dword ptr ss:[ebp-D9]
004070C6 . E8 99A6FFFF call 复件_Pla.00401764
004070CB . 33D2 xor edx, edx
004070CD . E8 26200000 call 复件_Pla.004090F8
004070D2 . 8A10 mov dl, byte ptr ds:[eax]
004070D4 . 8B85 68FFFFFF mov eax, dword ptr ss:[ebp-98]
004070DA . 8B80 70140000 mov eax, dword ptr ds:[eax+1470]
004070E0 . E8 47720100 call 复件_Pla.0041E32C
004070E5 . 66:C785 7CFFF>mov word ptr ss:[ebp-84], 0C8
004070EE . BA DB244800 mov edx, 复件_Pla.004824DB
004070F3 . 8D45 B4 lea eax, dword ptr ss:[ebp-4C]
004070F6 . E8 19670600 call 复件_Pla.0046D814
004070FB . FF45 88 inc dword ptr ss:[ebp-78]
004070FE . 8B10 mov edx, dword ptr ds:[eax]
00407100 . 8B8D 68FFFFFF mov ecx, dword ptr ss:[ebp-98]
00407106 . 8B81 70140000 mov eax, dword ptr ds:[ecx+1470]
0040710C . E8 77710100 call 复件_Pla.0041E288
00407111 . FF4D 88 dec dword ptr ss:[ebp-78]
00407114 . 8D45 B4 lea eax, dword ptr ss:[ebp-4C]
00407117 . BA 02000000 mov edx, 2
0040711C . E8 AB670600 call 复件_Pla.0046D8CC
00407121 . 8B8D 68FFFFFF mov ecx, dword ptr ss:[ebp-98]
00407127 . 8B81 70140000 mov eax, dword ptr ds:[ecx+1470]
0040712D . BA FF000000 mov edx, 0FF
00407132 . E8 296F0100 call 复件_Pla.0041E060
00407137 . 8B8D 68FFFFFF mov ecx, dword ptr ss:[ebp-98]
0040713D . 8B81 60140000 mov eax, dword ptr ds:[ecx+1460]
00407143 . E8 BCC20100 call 复件_Pla.00423404
00407148 . 83C0 0C add eax, 0C
0040714B . 8985 20FFFFFF mov dword ptr ss:[ebp-E0], eax
00407151 . 8B95 68FFFFFF mov edx, dword ptr ss:[ebp-98]
00407157 . 8B92 70140000 mov edx, dword ptr ds:[edx+1470]
0040715D . 8B85 20FFFFFF mov eax, dword ptr ss:[ebp-E0]
00407163 . 8B00 mov eax, dword ptr ds:[eax]
00407165 . 8B08 mov ecx, dword ptr ds:[eax]
00407167 . FF51 08 call dword ptr ds:[ecx+8]
0040716A . 66:C785 7CFFF>mov word ptr ss:[ebp-84], 0D4
00407173 . BA E0244800 mov edx, 复件_Pla.004824E0
00407178 . 8D45 B0 lea eax, dword ptr ss:[ebp-50]
说了这么多,相信朋友们都应该知道 天狼星 这个 变态 的注册码
校验方式了吧~ 利用上面的 主程序 注册码 计算方式,做出来个
伪注册机,因为算出来的注册码,只能用在主程序上面,做出来的
.EXE 的录像 还是有 未注册的 标志,所以我觉得爆了他比较不错,
一个原因是 去掉了 未注册的标志,还有一个原因就是 如果 把
PLAY.DAT 里面的 未注册用空格覆盖,我们的 自定义 信息就不可以
改字体,字号,颜色等等~~~
说了这么多,还是那句话,破解就是条条大路通罗马,怎么都可以
达到目的,这个软件的破解建议就是 利用本人制作的 算号器
再加上 play.dat 的爆破,看看,是不是 100% 的正版阿~
| 手把手教你破解灰鸽子成为会员!! | 10-05 |
| 手把手教你手脱灰鸽子2007 Beta | 08-14 |
| 零基础制作《武林外传》外挂 (VB | 07-11 |
| 壳,加壳,脱壳,介绍壳的一些基本 | 07-07 |
| 给新手引路-浓缩汇编基础 | 06-29 |
| 妙解破解的原理 | 05-10 |
| 教菜鸟写注册机 | 04-16 |
| 软件破解新手进化篇 | 04-16 |
| [软件破解]破解原理 | 04-14 |
| [软件破解]常见保护的攻击:序列号 | 04-14 |
| 用OllyDbg手脱RLPack V1.17加壳的 | 04-04 |
| PELock v1.0x 脱壳之完美风暴 | 03-28 |