某音像控制系统并口加密狗破解过程
1 使用W32DASM反汇编它,从中可以得到下面的关键地方,
* Possible StringData Ref from Code Obj ->”SOFTWARE\Svetlana Software\Audiosphere”
看到程序调用注册表值,所以就进入注册表的相应位置,查找需要的值,在这里你可以发现它有这样一个值FirstRunDate,当然如果你稍稍懂英语的话,就知道它是什么意思了。这里就是记录你第一次行的时间,我就将它给删除了,下面就开始破解它的。
2 在W32中还发现到这里比较重要
:0044B51A 8B55FC mov edx, dword ptr [ebp-04]
:0044B51D 8B831C020000 mov eax, dword ptr [ebx+0000021C]
:0044B523 E84C0DFDFF call 0041C274
* Possible StringData Ref from Code Obj ->”The 30 days evaluation period: “
|
:0044B528 6898B54400 push 0044B598
:0044B52D 8D55F8 lea edx, dword ptr [ebp-08]
:0044B530 B81E000000 mov eax, 0000001E
:0044B535 2BC6 sub eax, esi
:0044B537 E8D4B8FBFF call 00406E10
:0044B53C FF75F8 push [ebp-08]
* Possible StringData Ref from Code Obj ->” days left”
|
:0044B53F 68C0B54400 push 0044B5C0
:0044B544 8D45FC lea eax, dword ptr [ebp-04]
:0044B547 BA03000000 mov edx, 00000003
程序提示你已经过期多长时间了,那么这个程序是在那里调用它的呢?向上看可以看到是这里调用它的
* Referenced by a CALL at Address:
|:00452BFA
查找它的位置如下:
* Referenced by a CALL at Address:
|:0045255E
|
:00452B94 55 push ebp
:00452B95 8BEC mov ebp, esp
:00452B97 8B8038020000 mov eax, dword ptr [eax+00000238]
:00452B9D 83780C0A cmp dword ptr [eax+0C], 0000000A ***
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00452B31(C)
|
:00452BA1 755C jne 00452BFF
:00452BA3 E8204FFBFF call 00407AC8
:00452BA8 DB05047D4500 fild dword ptr [00457D04]
:00452BAE DEE9 fsubp st(1), st(0)
:00452BB0 D81D042C4500 fcomp dword ptr [00452C04]
:00452BB6 DFE0 fstsw ax
:00452BB8 9E sahf
:00452BB9 760E jbe 00452BC9
:00452BBB A1506D4500 mov eax, dword ptr [00456D50]
:00452BC0 8B00 mov eax, dword ptr [eax]
:00452BC2 E82D93FDFF call 0042BEF4
:00452BC7 EB36 jmp 00452BFF
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00452BB9(C)
|
:00452BC9 E8FA4EFBFF call 00407AC8
:00452BCE DB05047D4500 fild dword ptr [00457D04]
:00452BD4 DEE9 fsubp st(1), st(0)
:00452BD6 D81D082C4500 fcomp dword ptr [00452C08]
:00452BDC DFE0 fstsw ax
:00452BDE 9E sahf
:00452BDF 761E jbe 00452BFF
:00452BE1 E8E24EFBFF call 00407AC8
:00452BE6 DB05047D4500 fild dword ptr [00457D04]
:00452BEC DEE9 fsubp st(1), st(0)
:00452BEE E839FDFAFF call 0040292C
:00452BF3 8BD0 mov edx, eax
:00452BF5 A1D47C4500 mov eax, dword ptr [00457CD4]
:00452BFA E8C188FFFF call 0044B4C0 这里调用call
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00452BA1(C), :00452BC7(U), :00452BDF(C)
|
:00452BFF 5D pop ebp
:00452C00 C3 ret
好了,在这里你可以看到程序的运行情况了,在上面有三处可以跳跃过这里的地方,那么到底是哪一处呢。我们可以一试,因为我在前面已经将首次运行时间删除掉了,所以当程序重新运行时,已经无法正常运行了,但是如果你在***处设断的话,程序将在这里中断,如果你在这里强迫程序在jne 00452BFF处跳跃的话,它将能够正常运行了,并且在主画面中也没有要求注册的字样了,可是在about项中还要求注册。如果大家使用这个软件的话,时间过了话,就可以将上面的地方改掉就可以无限期的使用它的。但是它依然没有注册,那么我还没有完全成功,所以继续破解它。
这回我使用filemon来跟踪程序调用的什么文件(这个可是今天的关键地方)。通过跟踪,发现程序在我点击about时,它调用它的目录下一个audiosphere.key文件,我于是就查找目录是否有这个文件,发现没有。那么我们通常的作法就是建立一个这样文件,于是就建立了一个这样的文件,内容吗就是随便写的,但是我发现程序如果重新运行的话,在about选项中已经再也没有提示30天的限制了。现在已经变成完全注册了,因为在about中你可以发现这个软件注册给:?????,这个由你输入的值决定的。但是它是经过转换的,到这里这个程序算是破解完了。好了再整理一下。
1 查找:75 5c e8 20 4f
替换:eb — — — —
–表示不用换的值
2 在它的目录下建立一个audiosphere.key文件,内容自己定,一定要大于20个字符。 现在你再运行改后程序,你会发现它已经注册了。