【原創】星空視訊俱樂部 V1.75註冊演算法簡析
小弟的第一篇破文。。。大家鼓勵鼓勵阿。。。
[目標]星空視訊俱樂部 V1.75
[軟體簡介]《星空視訊俱樂部》:最值得信賴的網路電影電視軟體,新增超強音量控制功能,400多個國內外電視臺,一千多部電影、寫真集、電視劇、綜藝節目,速度快質量高的精彩視訊,專人實時跟蹤更新升級,本軟體具有自動升級功能。 通過獨特的合作資源,提供超過400套超高清晰的衛星電視節目,高速HBO大片,BBC新聞,日本MM、港臺鳳凰、華娛、星空、TVB系列,國內中央及各省衛星電視節目;性感寫真;搞笑小電影。
[工具]W32ASM無級版+OD+windows自帶計算器
[保護方式] 採用硬體序列號,一機一註冊碼
[加入時間] 2005-1-12
Loading...........
PS:
我的機器碼:B5016392
我嘗試的註冊碼:78787878
先試著著註冊一下,發現提示錯誤提示為”你輸入的註冊碼78787878不正確,請與作者聯絡。“
用W32ASM無級版開啟查詢字串,找到後進去,來到這裡。。。
* Possible StringData Ref from Code Obj ->"你輸入的註冊碼"
|
----->:0047BD99 68BCBF4700 push 0047BFBC
:0047BD9E 8D55D4 lea edx, dword ptr [ebp-2C]
:0047BDA1 8B45FC mov eax, dword ptr [ebp-04]
:0047BDA4 8B8008030000 mov eax, dword ptr [eax+00000308]
:0047BDAA E80927FCFF call 0043E4B8
:0047BDAF FF75D4 push [ebp-2C]
發現前面不是跳轉過來的,那就是說是正確就跳走。。
好,來看前面那句:
:0047BD91 3B0540394C00 cmp eax, dword ptr [004C3940]
:0047BD97 7438 je 0047BDD1
那我們可以想象,前面的比較肯定就是,註冊碼的比較拉。。。
用OD開啟,0047BD91下斷,載入軟體,隨便註冊一下,在這裡斷下,看到下面的就是比較的兩組資料:
DS:[004C3940]=00023F3A
EAX=FF570443
看不出什麼意思。。。。呵呵。。。是啊,那我們下前面點。。。
回來看看W32ASM,哦呵,看這裡:
* Possible StringData Ref from Code Obj ->" 您輸入的註冊碼無效,請從新輸入。"
|
:0047BD14 B884BF4700 mov eax, 0047BF84
:0047BD19 E86A01FBFF call 0042BE88
:0047BD1E E9BC010000 jmp 0047BEDF
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047BD12(C)
|
:0047BD23 8D45E4 lea eax, dword ptr [ebp-1C];就這裡了,從這裡開始吧
估計上面就是因為註冊碼有效才跳這裡來的,不然就會顯示註冊碼無效了。。呵呵
0047BD23下斷,從來。。。
斷下,一直按F8粗跟蹤,密切關注右邊的資料。。。
:0047BD23 8D45E4 lea eax, dword ptr [ebp-1C]//我們輸入的註冊碼
:0047BD26 50 push eax
:0047BD27 8D55E0 lea edx, dword ptr [ebp-20]
:0047BD2A 8B45FC mov eax, dword ptr [ebp-04]
:0047BD2D 8B8004030000 mov eax, dword ptr [eax+00000304]
:0047BD33 E88027FCFF call 0043E4B8
計算後的資料:
EAX 00000008
ECX 0012F9A8
EDX 7FFE0304
EBX 00D2FE54
:0047BD38 8B45E0 mov eax, dword ptr [ebp-20]//機器序列號
:0047BD3B B906000000 mov ecx, 00000006
:0047BD40 BA01000000 mov edx, 00000001
:0047BD45 E84A88F8FF call 00404594
又是一個CALL後的資料
EAX 0012FBEC
ECX 00000000
EDX 00000000
EBX 00D2FE54
:0047BD4A 8B4DE4 mov ecx, dword ptr [ebp-1C]//機器碼前6位
:0047BD4D 8D45E8 lea eax, dword ptr [ebp-18]
:0047BD50 BAB0BF4700 mov edx, 0047BFB0
:0047BD55 E82686F8FF call 00404380//步過
:0047BD5A 8B45E8 mov eax, dword ptr [ebp-18]//前面加了個”0x“
:0047BD5D E85AC8F8FF call 004085BC
EAX 00B50163
ECX 00D31D00 ASCII "0xB50163"
EDX 0012FB98
EBX 00D2FE54
:0047BD62 8BF0 mov esi, eax
:0047BD64 33C0 xor eax, eax
:0047BD66 55 push ebp
:0047BD67 6896BE4700 push 0047BE96
:0047BD6C 64FF30 push dword ptr fs:[eax]
:0047BD6F 648920 mov dword ptr fs:[eax], esp
:0047BD72 8D55DC lea edx, dword ptr [ebp-24]
:0047BD75 8B45FC mov eax, dword ptr [ebp-04]
:0047BD78 8B8008030000 mov eax, dword ptr [eax+00000308]
:0047BD7E E83527FCFF call 0043E4B8
:0047BD83 8B45DC mov eax, dword ptr [ebp-24]//我們的註冊碼
:0047BD86 E831C8F8FF call 004085BC
計算後資料:
EAX 04B23526
ECX 00D20914 ASCII "78787878"
EDX 0012FB8C
EBX 00D2FE54
:0047BD8B 8BD8 mov ebx, eax
:0047BD8D 8BC3 mov eax, ebx
:0047BD8F 2BC6 sub eax, esi//EAX-0xB50163??B50163不是就是我註冊碼的前6位啊。
:0047BD91 3B0540394C00 cmp eax, dword ptr [004C3940]//
EAX=03FD33C3 DS:[004C3940]=00023F3A
我們執行多次發現都是這個數字。。。。那我們就把他當常數吧(其實我後來去另外機子除錯也是這個數字,他就是一個常數,不變的。),現在我們再總的分析一下,也就是說註冊碼計算後的值要等於0x23F3A+0xB50163=。。。計算器按幾下下。。0xB7409D
好,這樣我們關鍵就是要看他把我們的註冊碼怎麼了一下,就是去那個
:0047BD86 E831C8F8FF call 004085BC
因為他計算了我們的註冊碼,然後和0xB7409D比較(其實是減了0xB50163和0x23F3A比較)。。
CALL下斷,重載入程式。。。。
進去了。。
:004085BC 53 push ebx
:004085BD 56 push esi
:004085BE 83C4F4 add esp, FFFFFFF4
:004085C1 8BD8 mov ebx, eax
:004085C3 8BD4 mov edx, esp
:004085C5 8BC3 mov eax, ebx
:004085C7 E88CA7FFFF call 00402D58//除錯後發現是核心
:004085CC 8BF0 mov esi, eax
:004085CE 833C2400 cmp dword ptr [esp], 00000000
:004085D2 7419 je 004085ED
:004085D4 895C2404 mov dword ptr [esp+04], ebx
:004085D8 C64424080B mov [esp+08], 0B
:004085DD 8D542404 lea edx, dword ptr [esp+04]
:004085E1 A1F43A4C00 mov eax, dword ptr [004C3AF4]
:004085E6 33C9 xor ecx, ecx
:004085E8 E833F9FFFF call 00407F20
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004085D2(C)
|
:004085ED 8BC6 mov eax, esi
:004085EF 83C40C add esp, 0000000C
:004085F2 5E pop esi
:004085F3 5B pop ebx
:004085F4 C3 ret
看起來不復雜。。。
那就看看核心吧。。
靠,太複雜了。。。
call 00402D58
:00402D58 53 push ebx
:00402D59 56 push esi
:00402D5A 57 push edi
:00402D5B 89C6 mov esi, eax
:00402D5D 50 push eax
:00402D5E 85C0 test eax, eax
:00402D60 746C je 00402DCE
:00402D62 31C0 xor eax, eax
:00402D64 31DB xor ebx, ebx
:00402D66 BFCCCCCC0C mov edi, 0CCCCCCC
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402D71(C)
|
:00402D6B 8A1E mov bl, byte ptr [esi]
:00402D6D 46 inc esi
:00402D6E 80FB20 cmp bl, 20
:00402D71 74F8 je 00402D6B
:00402D73 B500 mov ch, 00
:00402D75 80FB2D cmp bl, 2D
:00402D78 7462 je 00402DDC
:00402D7A 80FB2B cmp bl, 2B
:00402D7D 745F je 00402DDE
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402DE1(U)
|
:00402D7F 80FB24 cmp bl, 24
:00402D82 745F je 00402DE3
:00402D84 80FB78 cmp bl, 78
:00402D87 745A je 00402DE3
:00402D89 80FB58 cmp bl, 58
:00402D8C 7455 je 00402DE3
:00402D8E 80FB30 cmp bl, 30
:00402D91 7513 jne 00402DA6
:00402D93 8A1E mov bl, byte ptr [esi]
:00402D95 46 inc esi
:00402D96 80FB78 cmp bl, 78
:00402D99 7448 je 00402DE3
:00402D9B 80FB58 cmp bl, 58
:00402D9E 7443 je 00402DE3
:00402DA0 84DB test bl, bl
:00402DA2 7420 je 00402DC4
:00402DA4 EB04 jmp 00402DAA
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402D91(C)
|
:00402DA6 84DB test bl, bl//前面一堆就是在判斷是不是數字。。。
:00402DA8 742D je 00402DD7
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00402DA4(U), :00402DC2(C)
|
|--------> :00402DAA 80EB30 sub bl, 30//ASCII碼-0x30,轉數字
| :00402DAD 80FB09 cmp bl, 09
| :00402DB0 7725 ja 00402DD7
| :00402DB2 39F8 cmp eax, edi
| :00402DB4 7721 ja 00402DD7
| :00402DB6 8D0480 lea eax, dword ptr [eax+4*eax]//*5
| :00402DB9 01C0 add eax, eax//*2(並上上面的,不就是*10啊)
| :00402DBB 01D8 add eax, ebx//加到原來的上去
| :00402DBD 8A1E mov bl, byte ptr [esi]
| :00402DBF 46 inc esi
| :00402DC0 84DB test bl, bl
-------- :00402DC2 75E6 jne 00402DAA
整個就是一位位取數,把我們的ASCII的數字變成10進位制的。現在你看看你的EAX,是不是很熟悉啊,呵呵,就是出去我們要用的拉,0X4B23526(10進位制就是“78787878”)(啊?不會把,這麼簡單)哈,就這麼簡單。。後面也不要跟了。。。
我們也可以做序號產生器了。。。走吧,下面不要看了。。。。。
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402DA2(C)
|
:00402DC4 FECD dec ch
:00402DC6 7409 je 00402DD1
:00402DC8 85C0 test eax, eax
:00402DCA 7D54 jge 00402E20
:00402DCC EB09 jmp 00402DD7
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00402D60(C), :00402DED(C)
|
:00402DCE 46 inc esi
:00402DCF EB06 jmp 00402DD7
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402DC6(C)
|
:00402DD1 F7D8 neg eax
:00402DD3 7E4B jle 00402E20
:00402DD5 7849 js 00402E20
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00402DA8(C), :00402DB0(C), :00402DB4(C), :00402DCC(U), :00402DCF(U)
|:00402E05(C), :00402E0C(C)
|
:00402DD7 5B pop ebx
:00402DD8 29DE sub esi, ebx
:00402DDA EB47 jmp 00402E23
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402D78(C)
|
:00402DDC FEC5 inc ch
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402D7D(C)
|
:00402DDE 8A1E mov bl, byte ptr [esi]
:00402DE0 46 inc esi
:00402DE1 EB9C jmp 00402D7F
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00402D82(C), :00402D87(C), :00402D8C(C), :00402D99(C), :00402D9E(C)
|
:00402DE3 BFFFFFFF0F mov edi, 0FFFFFFF
:00402DE8 8A1E mov bl, byte ptr [esi]
:00402DEA 46 inc esi
:00402DEB 84DB test bl, bl
:00402DED 74DF je 00402DCE
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402E18(C)
|
:00402DEF 80FB61 cmp bl, 61
:00402DF2 7203 jb 00402DF7
:00402DF4 80EB20 sub bl, 20
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402DF2(C)
|
:00402DF7 80EB30 sub bl, 30
:00402DFA 80FB09 cmp bl, 09
:00402DFD 760B jbe 00402E0A
:00402DFF 80EB11 sub bl, 11
:00402E02 80FB05 cmp bl, 05
:00402E05 77D0 ja 00402DD7
:00402E07 80C30A add bl, 0A
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402DFD(C)
|
:00402E0A 39F8 cmp eax, edi
:00402E0C 77C9 ja 00402DD7
:00402E0E C1E004 shl eax, 04
:00402E11 01D8 add eax, ebx
:00402E13 8A1E mov bl, byte ptr [esi]
:00402E15 46 inc esi
:00402E16 84DB test bl, bl
:00402E18 75D5 jne 00402DEF
:00402E1A FECD dec ch
:00402E1C 7502 jne 00402E20
:00402E1E F7D8 neg eax
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00402DCA(C), :00402DD3(C), :00402DD5(C), :00402E1C(C)
|
:00402E20 59 pop ecx
:00402E21 31F6 xor esi, esi
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402DDA(U)
|
:00402E23 8932 mov dword ptr [edx], esi
:00402E25 5F pop edi
:00402E26 5E pop esi
:00402E27 5B pop ebx
:00402E28 C3 ret
。。OK。總結一下,演算法就是把我們輸入的註冊碼轉為10進位制,所以你必須要輸入10進位制的數字,然後J減去機器碼前6位(16進位制),必須等於0x23F3A。就這麼簡單。。
註冊碼=DEC(HEX(機器碼前6位)+0x23F3A)
PS:此外還有就是註冊碼不可以超過8位,不然就沒有上面的文章了。。。因為就不會來到我們下的斷了。
序號產生器程式碼如下(C語言版):
#include <stdio.h>
void main()
{
long n1,n2=0x23f3a,serial;
printf("\t+++++++++++++4nilz Crack+++++++++++++++\n");
printf("\t+tHis Program has FuCkEd bY 4nil......+\n");
printf("\t+just meAn iT Is rbsh....OK share,THX.+\n");
printf("\t+++++++++++++++++++++++++++++++++++++++\n\n");
printf("Enter the machine code:");
scanf("%6X",&n1);
serial=n1+n2;
printf("Serial:%d",serial);
getch();
}
VC++6.0下除錯通過。
也也!大功告成!
我廢話多吧,謝謝觀賞。。。。。睡覺拉,現在時刻0:24。。。困
相關文章
- Laravel——簡訊註冊2018-05-28Laravel
- RegEditor登錄檔修改器 1.2註冊演算法簡析2015-11-15演算法
- [原創]Focus
Magic V3.01 註冊演算法分析2015-11-15演算法
- 一個軟體的MD5註冊演算法【原創】2004-12-29演算法
- 網路電視大師 V4.0.0 Build 2003.9.25註冊演算法簡析2015-11-15UI演算法
- 【原創】Oracle的動態監聽註冊2008-04-14Oracle
- [原創視訊]PHP在netbeans中的簡單使用2009-12-04PHPBean
- 迷你網路電視5.1註冊演算法2003-07-04演算法
- Disk
Chief 1.2 簡單註冊演算法分析2015-11-15演算法
- IP檢視器V6.1版的演算法淺析(原創)--MD5演算法2015-11-15演算法
- [原創]Blowfish Cipher淺析2020-01-16
- Spring註解簡析2022-03-09Spring
- LanSee 註冊演算法2015-11-15演算法
- 網站註冊簡訊介面遭到簡訊轟炸機轟炸處理方案2019-05-10網站
- 原始碼簡析XXL-JOB的註冊和執行過程2021-05-10原始碼
- TP5 實現簡訊驗證碼註冊功能2020-11-05
- 巨集遠簡訊群發軟體(個人版)註冊分析2015-11-15
- 財智老闆通3.04註冊版---註冊演算法分析2003-03-16演算法
- Instant Source 註冊演算法分析+註冊器原始碼2015-11-15演算法原始碼
- supercleaner註冊演算法分析2015-11-15演算法
- 簡析限流演算法2019-05-20演算法
- Math ActivityMaker Skills v2.20註冊演算法(簡單)2015-11-15演算法
- 中文內碼轉換巨匠1.2【VB簡單】註冊演算法2004-09-22演算法
- Adult PDF Password Recovery v2.1註冊演算法(簡單)2015-11-15演算法
- SpeedFlash註冊演算法分析(VB)2015-11-15演算法
- 短視訊分享應用Vine註冊使用者達4000萬2013-08-23
- 商城網站新增了最新阿里大魚簡訊註冊登入2019-12-03網站阿里
- 簡析Windows訊息機制2019-05-14Windows
- SpringCloud Alibaba Nacos註冊中心原始碼淺析2021-01-25SpringGCCloud原始碼
- spycop5.5簡要註冊分析2015-11-15
- React & Redux 實現註冊登入認證系統(31 個視訊)2018-08-15ReactRedux
- 【譯】Swift演算法俱樂部-樹2019-03-01Swift演算法
- 【譯】Swift演算法俱樂部-堆2019-01-11Swift演算法
- 智慧合併剪輯視訊,一鍵自動新增視訊、音訊以及文案,輕鬆偽原創2021-12-03音訊
- 創造簡約視覺風格的 3 個原則2019-04-30視覺
- [原創]簡單演算法――函式影像大師V
4.52015-11-15演算法函式
- 短視訊內容創業,註定只是少數人的遊戲2022-03-31創業遊戲
- 軟體工程目錄管理淺析(原創)2008-07-01軟體工程