【前 言】:这个软件有很多地方不明白,所以发出来和大家探讨一下!(在这里也要谢谢安靖)
【下载页面】

http://www.softreg.com.cn/shareware_view.asp?id=/3E781F2B-1927-46BD-BB4E-567A2FE09680/
【文章作者】:辉仔Yock[DFCG][YCG]
【作者声明】:本人发表这篇文章只是为了学习和研究!!!请不用于商业用途或是将本文方法制作的注册机任意传播,读者看了文章后所做的事情和我无关,我也不会负责,请读者看了文章后三思而后行!最后希望大家在经济基础好的时候,支持共享软件!
【破解工具】:OLLYDBG W32Dasm

—————————————————————————————————
【过 程】:
主程式SFCAPCaster.exe没有加壳,事用Microsoft Visual C 6.0编写的!
用W32dasm反汇编,根据参考字串很快找到关键!
用OLLYDBG加载SFCAPCaster.exe

选择帮助-->注册-->输入用户名Yock196(用户名要大于5位)-->邮箱地址(能够不填,下面不做运算!-->输入20位的假注册码KHSC-987654321ABCDEF(开头五位一定要是"KHSC-")

下断点004147D4来到下面:

:004147BF E83AE40100 call 00432BFE
//这里事取得用户名位数

:004147C4 8B07 mov eax, dword ptr [edi]
:004147C6 C744242000000000 mov [esp 20], 00000000
:004147CE 8B40F8 mov eax, dword ptr [eax-08]
:004147D1 83F805 cmp eax, 00000005
//比较用户名是否小于5位

:004147D4 7D13 jge 004147E9
:004147D6 6A00 push 00000000
:004147D8 6A10 push 00000010

* Possible StringData Ref from Data Obj ->"请输入长度大于5的用户名称"
|
:004147DA 68A05B4500 push 00455BA0
:004147DF E8CF410200 call 004389B3
:004147E4 E91E010000 jmp 00414907

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004147D4(C)
|
:004147E9 8D4C2410 lea ecx, dword ptr [esp 10]
:004147ED 8D7E5C lea edi, dword ptr [esi 5C]
:004147F0 6A05 push 00000005
:004147F2 51 push ecx
:004147F3 8BCF mov ecx, edi
:004147F5 E8B18A0100 call 0042D2AB
:004147FA 8B00 mov eax, dword ptr [eax]

* Possible StringData Ref from Data Obj ->"KHSC-"
|
:004147FC 68985B4500 push 00455B98
:00414801 50 push eax
:00414802 E8F59E0000 call 0041E6FC
//比较注册码的前面五位是否"KHSC-"

:00414807 83C408 add esp, 00000008
:0041480A 85C0 test eax, eax
:0041480C 7511 jne 0041481F
//不是就跳下去出错

:0041480E 8B17 mov edx, dword ptr [edi]
:00414810 837AF814 cmp dword ptr [edx-08], 00000014
//比较注册码是否等于20位

:00414814 0F95C0 setne al
:00414817 84C0 test al, al
:00414819 7504 jne 0041481F
//不是的话跳下去出错

:0041481B 32DB xor bl, bl
:0041481D EB02 jmp 00414821

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0041480C(C), :00414819(C)
|
:0041481F B301 mov bl, 01

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041481D(U)
|
:00414821 8D4C2410 lea ecx, dword ptr [esp 10]
:00414825 E85FE60100 call 00432E89
:0041482A 84DB test bl, bl
:0041482C 7413 je 00414841
//输入的注册码假如不符合上面的条件就不跳走!
//符合反之
//这里能够说是个暗桩,我第一次以为这样注册成功了!
//其实不是的,符合上面的条件,但不是真的注册码相同是未注册!

:0041482E 6A00 push 00000000
:00414830 6A10 push 00000010

* Possible StringData Ref from Data Obj ->"注册失败!"
|
:00414832 688C5B4500 push 00455B8C
:00414837 E877410200 call 004389B3
:0041483C E9C6000000 jmp 00414907

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041482C(C) //上面来到这里!

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!