MobileSearch(手機號碼歸屬地查詢) v2.0註冊演算法,附序號產生器~~~~~~ (30千字)
名稱:MobileSearch(手機號碼歸屬地查詢) v2.0 測試版 資料庫[2002-02-17]
下載:http://www.SearchCN.net
(作者主頁)或天天安全網(正式版)
簡介:本軟體收錄了34300多條手機號碼歸屬地資訊,可以詳細查詢到手機號碼的開戶地資訊,包括該號碼所屬省份、城市、長途區號以及該號碼SIM卡型別。號碼資源收錄容量極大,可以方便地幫你瞭解任何一個手機來電、簡訊息的來源地。
限制:在2002年2月3日前,您可以使用該註冊測試版的全部功能,在2002年2月3日後,除了您不能使用線上更新資料庫功能外,其他功能完全可以使用,但是,您無法獲得我們的升級服務。
原因:不久前下載了MobileSearch v2.0 測試版,裡面附有另類序號產生器,但不能用,於是自己動手,可能因為是測試版,它的保護很弱,輸入註冊碼後會直接明碼比較,所以找了個註冊碼自己使用.上個星期,在網上看到出了正式版,下載後發現保護加強,不直接比較,須退出後驗證,試著把測試版的註冊碼填入可註冊成功,說明它演算法沒變(已證實,請留意文章後部分),雖然可確定它的註冊資訊儲存在MobileSearch.ini中,可下bpx
GetPrivateProfileString來追,但感覺測試版比較容易入手,於是決定寫個序號產生器以免日後麻煩,當追到它演算法部分時更堅定了這個決心!
為何釋出序號產生器:正式版中的使用條款上只說未註冊不能使用超過一個月,不可修改本軟體,不可使用修改版,不可獲取和使用軟體資料庫,沒說不能使用序號產生器:-)
另外我覺得,使用一個這麼複雜煩瑣而且應該不可逆的演算法算出註冊碼,最後來個明碼比較,這樣的保護不如沒有好,不過也難怪作者好象是第一次寫軟體,但願以後我們的程式設計師都不要這樣為好!同時說明一下如何用程式本身來寫序號產生器
開始:軟體是用Borland C++寫的,沒加殼,我的註冊名Sam Von,我是用TRW直接bpm註冊名找到下面程式碼的,用TRW而不用w32dasm的原因是可以比較容易確定那裡才是演算法的開始,因為程式可能會分幾個部分來算註冊碼,缺點是很容易迷失方向.以下資料如不特別說明均為16進位制數.另外要注意測試版未註冊會在標題處有(註冊版)字樣,每次進入都會提示,註冊成功後會消失!
==Main Code=================================================
這裡比較明顯,第1第2個Call是一樣的,說明程式經過了兩次相同的演算法來獲得正確的註冊碼,第3個Call是進行註冊碼比較的地方,很簡單我沒貼出來,我的目的是瞭解演算法寫出序號產生器
0187:004075D6 MOV BYTE [EBP-77],00
0187:004075DA
PUSH DWORD [EBP-70] <---這裡指向一個字串"MobileSearch2",重要資料
0187:004075DD LEA ECX,[EBP+FFFFFF6C] <---ecx指向我的註冊名"Sam
Von"
0187:004075E3 PUSH ECX
0187:004075E4 CALL 00401C00
0187:004075E9 ADD ESP,BYTE +08
0187:004075EC
MOV [EBP-6C],EAX
0187:004075EF PUSH
DWORD [EBP-70] <---"MobileSearch2"
0187:004075F2 PUSH
DWORD [EBP-6C] <---這裡指向上面Call算出的結果,稱為
0187:004075F5
CALL 00401C00 中間註冊碼,用它代替註冊名來運算
0187:004075FA ADD ESP,BYTE +08
0187:004075FD
MOV [EBP-6C],EAX
0187:00407600 LEA
EAX,[EBP+FFFFFF7C]
0187:00407606 PUSH EAX
0187:00407607 PUSH DWORD [EBP-6C] <---這裡就是正確的註冊碼了
0187:0040760A CALL 004707F0
0187:0040760F ADD
ESP,BYTE +08
0187:00407612 TEST EAX,EAX
0187:00407614 JNZ NEAR 00407809
==Main Code
End================================================
==Main Call====================================================
這個演算法可心說又臭又長,我寫不出它的演算法公式,光是在追Call 1的過程裡我就做了4頁紙的筆記,Call 2我就沒做記錄了,如果想了解它的演算法請大家自己追一下,我只講個大概:
1.程式先用字元"MobileSearch2"的前兩位查表,得到兩個資料,並將前兩位當作註冊碼的前兩位
2.將註冊名的每一位X2,如Sam
Von(53 61 6D 20 56 6F 6E)-->A6 C2 DA 40 AC DE DC 00
3.註冊名最多隻取8位,不夠就用0補上
4.將2步得到的資料進行N次移位,補位,去位,前後4位相運算,查表得到"中間"註冊碼
5.重複1~4步,不過要將2中的註冊名用"中間"註冊碼代替來運算,最後查表得正確註冊碼
注:下面註解中所說的"第2次運算"是指進入Main Code中(004075F5 CALL 00401C00)這個Call裡記憶體的狀態,因為雖然兩個Call的過程一樣,不過兩次運算中記憶體的資料有了變化,除錯過程中請注意[ebp+??]這樣的地址!!
0187:00401C00 PUSH EBP
0187:00401C01 MOV
EBP,ESP
0187:00401C03 ADD ESP,FFFFFF40
0187:00401C09 XOR EAX,EAX
0187:00401C0B
MOV [EBP-14],EAX
0187:00401C0E XOR
EDX,EDX
0187:00401C10 MOV [EBP-18],EDX
第1次運算這裡為0,第二次運算這裡是
0187:00401C13 LEA
ECX,[EBP-38] <---Call 2的運算結果37 8E 9C 0C
FD F9 75 96
0187:00401C16 MOV [EBP-3C],ECX
可先不管這一步
0187:00401C19 MOV
EAX,[EBP+0C]
0187:00401C1C CMP BYTE [EAX],00
<---[eax]="MobileSearch2"
0187:00401C1F JNZ
00401C25
0187:00401C21 MOV DL,41
0187:00401C23
JMP SHORT 00401C2A
0187:00401C25 MOV
ECX,[EBP+0C]
0187:00401C28 MOV DL,[ECX]
<---"M"
0187:00401C2A MOV
[00487694],DL <---這裡是最後儲存註冊碼的地方
0187:00401C30
XOR EAX,EAX
0187:00401C32 MOV
AL,DL
0187:00401C34 MOV [EBP-0C],EAX
0187:00401C37
MOV ECX,[EBP-0C]
0187:00401C3A XOR
EAX,EAX
0187:00401C3C MOV AL,[ECX+0047E4B4]
<---用"M"查表,資料請參照序號產生器的資料DATA1
0187:00401C42 MOV
[EBP-14],EAX <---Save
0187:00401C45 MOV
EDX,[EBP+0C]
0187:00401C48 CMP BYTE
[EDX+01],00
0187:00401C4C JNZ 00401C52
0187:00401C4E
MOV CL,41
0187:00401C50 JMP
SHORT 00401C58
0187:00401C52 MOV EAX,[EBP+0C]
0187:00401C55 MOV CL,[EAX+01] <---"o"
0187:00401C58 MOV [00487695],CL
0187:00401C5E
XOR EAX,EAX
0187:00401C60 MOV
AL,CL
0187:00401C62 MOV [EBP-0C],EAX
0187:00401C65
MOV EDX,[EBP-0C]
0187:00401C68 XOR
EAX,EAX
0187:00401C6A MOV AL,[EDX+0047E4B4]
<---用"o"查表,並shl它
0187:00401C70 SHL EAX,04
0187:00401C73 MOV [EBP-18],EAX <---Save
0187:00401C76 XOR EDX,EDX
0187:00401C78
MOV [EBP-04],EDX
0187:00401C7B MOV
ECX,[EBP+08]
0187:00401C7E MOV AL,[ECX]
<---"Sam Von"
0187:00401C80 MOV
[EBP-3D],AL
0187:00401C83 INC DWORD
[EBP+08]
0187:00401C86 CMP BYTE [EBP-3D],00
0187:00401C8A JZ 00401CA1
0187:00401C8C MOV
DL,[EBP-3D]
0187:00401C8F ADD EDX,EDX
<---ADD
0187:00401C91 MOV
ECX,[EBP-04]
0187:00401C94 MOV [EBP+ECX-2C],DL
0187:00401C98 INC DWORD [EBP-04]
0187:00401C9B
CMP DWORD [EBP-04],BYTE +08
0187:00401C9F JC
00401C7B
0187:00401CA1 CMP DWORD
[EBP-04],BYTE +08
0187:00401CA5 JNC 00401CB8
0187:00401CA7 MOV EAX,[EBP-04]
0187:00401CAA
MOV BYTE [EBP+EAX-2C],00
0187:00401CAF INC
DWORD [EBP-04] <---最多取8位,不夠補0
0187:00401CB2
CMP DWORD [EBP-04],BYTE +08
0187:00401CB6 JC
00401CA7
0187:00401CB8 LEA EDX,[EBP+FFFFFF40]
0187:00401CBE PUSH EDX
0187:00401CBF LEA
ECX,[EBP-2C]
0187:00401CC2 PUSH ECX
0187:00401CC3 CALL 00401514
<---Call 1先進去看看
0187:00401CC8 ADD ESP,BYTE +08
0187:00401CCB PUSH DWORD [EBP-18]<---340
0187:00401CCE
PUSH DWORD [EBP-14]<---18
0187:00401CD1 LEA
EAX,[EBP+FFFFFF40] <---指向Call 1結果 lea eax,[esp]=mov eax,esp
0187:00401CD7 PUSH EAX
0187:00401CD8 LEA
EDX,[EBP-1C]
0187:00401CDB PUSH EDX
0187:00401CDC
LEA ECX,[EBP-20]
0187:00401CDF PUSH
ECX
0187:00401CE0 CALL 00401825 <---進入Call
2
0187:00401CE5 ADD ESP,BYTE +14 <---esp指向Call
2結果
0187:00401CE8 MOV EAX,[EBP-20] <---Call
2結果前4位
0187:00401CEB MOV [EBP-24],EAX
0187:00401CEE
MOV DL,[EBP-24]
0187:00401CF1 AND
DL,FF
0187:00401CF4 MOV ECX,[EBP-3C]
0187:00401CF7 MOV [ECX],DL
0187:00401CF9
INC DWORD [EBP-3C]
0187:00401CFC MOV
EAX,[EBP-24]
0187:00401CFF SHR EAX,08
0187:00401D02 AND AL,FF
0187:00401D04 MOV
EDX,[EBP-3C]
0187:00401D07 MOV [EDX],AL
0187:00401D09 INC DWORD [EBP-3C]
0187:00401D0C
MOV ECX,[EBP-24]
0187:00401D0F SHR
ECX,10
0187:00401D12 AND CL,FF
0187:00401D15
MOV EAX,[EBP-3C]
0187:00401D18 MOV
[EAX],CL
0187:00401D1A INC DWORD [EBP-3C]
0187:00401D1D MOV EDX,[EBP-24]
0187:00401D20
SHR EDX,18
0187:00401D23 AND
DL,FF
0187:00401D26 MOV ECX,[EBP-3C]
0187:00401D29
MOV [ECX],DL
0187:00401D2B INC
DWORD [EBP-3C]
0187:00401D2E MOV EAX,[EBP-1C]
0187:00401D31 MOV [EBP-24],EAX
0187:00401D34
MOV DL,[EBP-24]
0187:00401D37 AND
DL,FF
0187:00401D3A MOV ECX,[EBP-3C]
0187:00401D3D MOV [ECX],DL
0187:00401D3F
INC DWORD [EBP-3C]
0187:00401D42 MOV
EAX,[EBP-24]
0187:00401D45 SHR EAX,08
0187:00401D48 AND AL,FF
0187:00401D4A MOV
EDX,[EBP-3C]
0187:00401D4D MOV [EDX],AL
0187:00401D4F INC DWORD [EBP-3C]
0187:00401D52
MOV ECX,[EBP-24]
0187:00401D55 SHR
ECX,10
0187:00401D58 AND CL,FF
0187:00401D5B
MOV EAX,[EBP-3C]
0187:00401D5E MOV
[EAX],CL
0187:00401D60 INC DWORD [EBP-3C]
0187:00401D63 MOV EDX,[EBP-24]
0187:00401D66
SHR EDX,18
0187:00401D69 AND
DL,FF
0187:00401D6C MOV ECX,[EBP-3C]
0187:00401D6F
MOV [ECX],DL
0187:00401D71 INC
DWORD [EBP-3C]
0187:00401D74 XOR EAX,EAX
0187:00401D76
MOV [EBP-10],EAX
0187:00401D79 MOV
BYTE [EBP-3E],80 <---這幾個資料是要參與運算的
0187:00401D7D MOV
BYTE [EBP-30],00
0187:00401D81 MOV
DWORD [EBP-04],02
0187:00401D88 MOV BYTE [EBP-3D],00
0187:00401D8C XOR EDX,EDX
0187:00401D8E
MOV [EBP-08],EDX
0187:00401D91 SHL
BYTE [EBP-3D],1
0187:00401D94 MOV ECX,[EBP-10]
0187:00401D97 MOV AL,[EBP+ECX-38] <---取結果第一位
0187:00401D9B AND AL,[EBP-3E]
0187:00401D9E
JZ 00401DA4
0187:00401DA0 OR
BYTE [EBP-3D],01
0187:00401DA4 SHR BYTE [EBP-3E],1
0187:00401DA7 CMP BYTE [EBP-3E],00
0187:00401DAB
JNZ 00401DB4
0187:00401DAD INC
DWORD [EBP-10]
0187:00401DB0 MOV BYTE [EBP-3E],80
0187:00401DB4 INC DWORD [EBP-08]
0187:00401DB7
CMP DWORD [EBP-08],BYTE +06 <---上面這一小段作運算
0187:00401DBB
JC 00401D91
0187:00401DBD XOR
EDX,EDX
0187:00401DBF MOV DL,[EBP-3D]
0187:00401DC2
MOV CL,[EDX+0047E534] <---查表得到註冊碼,請參照序號產生器的szDATA
0187:00401DC8
MOV EAX,[EBP-04] <---eax=2
0187:00401DCB
MOV [EAX+00487694],CL <---跳過註冊碼前兩位"Mo"來儲存
0187:00401DD1
INC DWORD [EBP-04]
0187:00401DD4 CMP
DWORD [EBP-04],BYTE +0D <---註冊碼為13(D)位
0187:00401DD8
JC 00401D88
0187:00401DDA MOV
BYTE [004876A1],00 <---最後補上0
0187:00401DE1 MOV
EAX,00487694 <---d 487694,"中間"註冊碼和正確註冊碼都儲存在此
0187:00401DE6
MOV ESP,EBP
0187:00401DE8 POP
EBP
0187:00401DE9 RET
==Call 1=================================================
0187:00401514 PUSH EBP <---這裡可能有花指令
0187:00401515 MOV EBP,ESP
0187:00401517
ADD ESP,BYTE -1C
0187:0040151A MOV
EAX,[EBP+0C]
0187:0040151D MOV [EBP-18],EAX
0187:00401520 MOV EDX,[EBP+08]
0187:00401523
MOV [EBP-14],EDX
0187:00401526 MOV
ECX,[EBP-14]
0187:00401529 XOR EAX,EAX
這裡指向註冊名變形後的結果
0187:0040152B MOV
AL,[ECX] <---A6 C2 DA 40 | AC DE DC 00
0187:0040152D
MOV [EBP-04],EAX
0187:00401530 INC
DWORD [EBP-14]
0187:00401533 MOV EDX,[EBP-14]
0187:00401536 XOR ECX,ECX
0187:00401538
MOV CL,[EDX]
0187:0040153A SHL
ECX,08
0187:0040153D OR [EBP-04],ECX
0187:00401540
INC DWORD [EBP-14]
0187:00401543 MOV
EAX,[EBP-14]
0187:00401546 XOR EDX,EDX
0187:00401548 MOV DL,[EAX]
0187:0040154A
SHL EDX,10
0187:0040154D OR
[EBP-04],EDX
0187:00401550 INC DWORD [EBP-14]
0187:00401553 MOV ECX,[EBP-14]
0187:00401556
XOR EAX,EAX
0187:00401558 MOV
AL,[ECX]
0187:0040155A SHL EAX,18
0187:0040155D
OR [EBP-04],EAX
0187:00401560 INC
DWORD [EBP-14]
0187:00401563 MOV EDX,[EBP-14]
0187:00401566 XOR ECX,ECX
0187:00401568
MOV CL,[EDX]
0187:0040156A MOV
[EBP-08],ECX
0187:0040156D INC DWORD [EBP-14]
0187:00401570 MOV EAX,[EBP-14]
0187:00401573
XOR EDX,EDX
0187:00401575 MOV
DL,[EAX]
0187:00401577 SHL EDX,08
0187:0040157A
OR [EBP-08],EDX
0187:0040157D INC
DWORD [EBP-14]
0187:00401580 MOV ECX,[EBP-14]
0187:00401583 XOR EAX,EAX
0187:00401585
MOV AL,[ECX]
0187:00401587 SHL
EAX,10
0187:0040158A OR [EBP-08],EAX
0187:0040158D
INC DWORD [EBP-14]
0187:00401590 MOV
EDX,[EBP-14]
0187:00401593 XOR ECX,ECX
0187:00401595 MOV CL,[EDX]
0187:00401597
SHL ECX,18 這上面是將它變成這樣
0187:0040159A OR [EBP-08],ECX <---AC DE
DC 00 | A6 C2 DA 40
0187:0040159D INC DWORD [EBP-14]
0187:004015A0 MOV EAX,[EBP-08] <---這裡下面進行了前後4位相互間的運算
0187:004015A3 SHR EAX,04
除錯時注意幾個地方就能搞清楚,
0187:004015A6 XOR
EAX,[EBP-04] [ebp-8]是前4位,[ebp-4]是後4位
0187:004015A9
AND EAX,0F0F0F0F [ebp-c]儲存臨時結果,其它的是些資料
0187:004015AE MOV [EBP-0C],EAX
指標和計數器等
0187:004015B1 MOV EDX,[EBP-0C]
0187:004015B4
XOR [EBP-04],EDX
0187:004015B7 MOV
ECX,[EBP-0C]
0187:004015BA SHL ECX,04
0187:004015BD XOR [EBP-08],ECX
0187:004015C0
MOV EAX,[EBP-04]
0187:004015C3 SHL
EAX,12
0187:004015C6 XOR EAX,[EBP-04]
0187:004015C9 AND EAX,CCCC0000
0187:004015CE
MOV [EBP-0C],EAX
0187:004015D1 MOV
EDX,[EBP-04]
0187:004015D4 XOR EDX,[EBP-0C]
0187:004015D7 MOV ECX,[EBP-0C]
0187:004015DA
SHR ECX,12
0187:004015DD XOR
EDX,ECX
0187:004015DF MOV [EBP-04],EDX
0187:004015E2
MOV EAX,[EBP-08]
0187:004015E5 SHL
EAX,12
0187:004015E8 XOR EAX,[EBP-08]
0187:004015EB AND EAX,CCCC0000
0187:004015F0
MOV [EBP-0C],EAX
0187:004015F3 MOV
EDX,[EBP-08]
0187:004015F6 XOR EDX,[EBP-0C]
0187:004015F9 MOV ECX,[EBP-0C]
0187:004015FC
SHR ECX,12
0187:004015FF XOR
EDX,ECX
0187:00401601 MOV [EBP-08],EDX
0187:00401604
MOV EAX,[EBP-08]
0187:00401607 SHR
EAX,1
0187:00401609 XOR EAX,[EBP-04]
0187:0040160C AND EAX,55555555
0187:00401611
MOV [EBP-0C],EAX
0187:00401614 MOV
EDX,[EBP-0C]
0187:00401617 XOR [EBP-04],EDX
0187:0040161A MOV ECX,[EBP-0C]
0187:0040161D
ADD ECX,ECX
0187:0040161F XOR
[EBP-08],ECX
0187:00401622 MOV EAX,[EBP-04]
0187:00401625 SHR EAX,08
0187:00401628 XOR
EAX,[EBP-08]
0187:0040162B AND EAX,00FF00FF
0187:00401630 MOV [EBP-0C],EAX
0187:00401633
MOV EDX,[EBP-0C]
0187:00401636 XOR
[EBP-08],EDX
0187:00401639 MOV ECX,[EBP-0C]
0187:0040163C SHL ECX,08
0187:0040163F
XOR [EBP-04],ECX
0187:00401642 MOV
EAX,[EBP-08]
0187:00401645 SHR EAX,1
0187:00401647 XOR EAX,[EBP-04]
0187:0040164A
AND EAX,55555555
0187:0040164F MOV
[EBP-0C],EAX
0187:00401652 MOV EDX,[EBP-0C]
0187:00401655 XOR [EBP-04],EDX
0187:00401658
MOV ECX,[EBP-0C]
0187:0040165B ADD
ECX,ECX
0187:0040165D XOR [EBP-08],ECX
0187:00401660 MOV EAX,[EBP-08]
0187:00401663
AND EAX,FF
0187:00401668 SHL
EAX,10
0187:0040166B MOV EDX,[EBP-08]
0187:0040166E
AND EDX,FF00
0187:00401674 OR
EAX,EDX
0187:00401676 MOV ECX,[EBP-08]
0187:00401679
AND ECX,00FF0000
0187:0040167F SHR
ECX,10
0187:00401682 OR EAX,ECX
0187:00401684
MOV EDX,[EBP-04]
0187:00401687 AND
EDX,F0000000
0187:0040168D SHR EDX,04
0187:00401690 OR EAX,EDX
0187:00401692 MOV
[EBP-08],EAX
0187:00401695 AND DWORD
[EBP-04],0FFFFFFF
0187:0040169C XOR EAX,EAX
0187:0040169E MOV [EBP-1C],EAX
0187:004016A1
MOV ECX,[EBP-1C]
<---從這裡開始至ret前是一個迴圈
0187:004016A4 CMP BYTE [ECX+0047E4A4],00
<---這裡查表使下面的運算產生分支
0187:004016AB JZ 004016D1
資料參照序號產生器的DATA5
0187:004016AD MOV EAX,[EBP-04]
0187:004016B0
SHR EAX,02
0187:004016B3 MOV
EDX,[EBP-04]
0187:004016B6 SHL EDX,1A
0187:004016B9
OR EAX,EDX
0187:004016BB MOV
[EBP-04],EAX
0187:004016BE MOV ECX,[EBP-08]
0187:004016C1 SHR ECX,02
0187:004016C4 MOV
EAX,[EBP-08]
0187:004016C7 SHL EAX,1A
0187:004016CA OR ECX,EAX
0187:004016CC
MOV [EBP-08],ECX
0187:004016CF
JMP SHORT 004016F1
0187:004016D1 MOV
EDX,[EBP-04]
0187:004016D4 SHR EDX,1
0187:004016D6 MOV ECX,[EBP-04]
0187:004016D9
SHL ECX,1B
0187:004016DC OR
EDX,ECX
0187:004016DE MOV [EBP-04],EDX
0187:004016E1
MOV EAX,[EBP-08]
0187:004016E4 SHR
EAX,1
0187:004016E6 MOV EDX,[EBP-08]
0187:004016E9 SHL EDX,1B
0187:004016EC OR
EAX,EDX
0187:004016EE MOV [EBP-08],EAX
0187:004016F1 AND DWORD [EBP-04],0FFFFFFF
0187:004016F8 AND DWORD [EBP-08],0FFFFFFF
0187:004016FF
MOV ECX,[EBP-04]
0187:00401702 SHR
ECX,06
0187:00401705 AND ECX,BYTE +03
0187:00401708 MOV EAX,[EBP-04]
0187:0040170B
SHR EAX,07
0187:0040170E AND
EAX,BYTE +3C
0187:00401711 OR ECX,EAX
0187:00401713
MOV EDX,[ECX*4+0047DDA4] <---往下請注意此形式的程式碼,它是在查表
0187:0040171A MOV ECX,[EBP-04]
共有3個表,每個都很大
0187:0040171D AND
ECX,BYTE +3F
0187:00401720 OR EDX,[ECX*4+0047DCA4]
<---47DCA4是表1的開始,請參照序號產生器的DATA2
0187:00401727 MOV
EAX,[EBP-04]
0187:0040172A SHR EAX,0D
0187:0040172D
AND EAX,BYTE +0F
0187:00401730 MOV
ECX,[EBP-04]
0187:00401733 SHR ECX,0E
0187:00401736 AND ECX,BYTE +30
0187:00401739
OR EAX,ECX
0187:0040173B OR
EDX,[EAX*4+0047DEA4]
0187:00401742 MOV EAX,[EBP-04]
0187:00401745 SHR EAX,14
0187:00401748
AND EAX,BYTE +01
0187:0040174B MOV
ECX,[EBP-04]
0187:0040174E SHR ECX,15
0187:00401751 AND ECX,BYTE +06
0187:00401754
OR EAX,ECX
0187:00401756 MOV
ECX,[EBP-04]
0187:00401759 SHR ECX,16
0187:0040175C
AND ECX,BYTE +38
0187:0040175F OR
EAX,ECX
0187:00401761 OR EDX,[EAX*4+0047DFA4]
0187:00401768 MOV [EBP-10],EDX
0187:0040176B
MOV EAX,[EBP-08]
0187:0040176E SHR
EAX,07
0187:00401771 AND EAX,BYTE +03
0187:00401774 MOV EDX,[EBP-08]
0187:00401777
SHR EDX,08
0187:0040177A AND
EDX,BYTE +3C
0187:0040177D OR EAX,EDX
0187:0040177F
MOV EAX,[EAX*4+0047E1A4]
0187:00401786 MOV
EDX,[EBP-08]
0187:00401789 AND EDX,BYTE
+3F
0187:0040178C OR EAX,[EDX*4+0047E0A4]
<---表2開始,請參照序號產生器的DATA3
0187:00401793 MOV ECX,[EBP-08]
0187:00401796 SHR ECX,0F
0187:00401799
AND ECX,BYTE +3F
0187:0040179C OR
EAX,[ECX*4+0047E2A4]
0187:004017A3 MOV EDX,[EBP-08]
0187:004017A6 SHR EDX,15
0187:004017A9
AND EDX,BYTE +0F
0187:004017AC MOV
ECX,[EBP-08]
0187:004017AF SHR ECX,16
0187:004017B2 AND ECX,BYTE +30
0187:004017B5
OR EDX,ECX
0187:004017B7 OR
EAX,[EDX*4+0047E3A4]
0187:004017BE MOV [EBP-0C],EAX
0187:004017C1 MOV EAX,[EBP-0C]
0187:004017C4
SHL EAX,10
0187:004017C7 MOV
EDX,[EBP-10]
0187:004017CA AND EDX,FFFF
0187:004017D0
OR EAX,EDX
0187:004017D2 AND
EAX,BYTE -01
0187:004017D5 MOV ECX,[EBP-18]
0187:004017D8 MOV [ECX],EAX
<---儲存在此,請打d ecx觀察運算的結果
0187:004017DA ADD
DWORD [EBP-18],BYTE +04
0187:004017DE MOV
EAX,[EBP-10]
0187:004017E1 SHR EAX,10
0187:004017E4 MOV EDX,[EBP-0C]
0187:004017E7
AND EDX,FFFF0000
0187:004017ED OR
EAX,EDX
0187:004017EF MOV [EBP-10],EAX
0187:004017F2 MOV EAX,[EBP-10]
0187:004017F5
SHL EAX,04
0187:004017F8 MOV
ECX,[EBP-10]
0187:004017FB SHR ECX,1C
0187:004017FE
OR EAX,ECX
0187:00401800 MOV
[EBP-10],EAX
0187:00401803 MOV EAX,[EBP-10]
0187:00401806 AND EAX,BYTE -01
0187:00401809
MOV EDX,[EBP-18]
0187:0040180C MOV
[EDX],EAX <---儲存在此
0187:0040180E
ADD DWORD [EBP-18],BYTE +04
0187:00401812 INC
DWORD [EBP-1C]
0187:00401815 CMP
DWORD [EBP-1C],BYTE +10 <---共迴圈16(D)次,迴圈完後會在記憶體中產生
0187:00401819
JL NEAR 004016A1
一個共32(D) dword的資料
0187:0040181F XOR
EAX,EAX
0187:00401821 MOV ESP,EBP
0187:00401823
POP EBP
0187:00401824 RET
<---請先返回Main Call
==Call 2==========================================================
0187:00401825
PUSH EBP
0187:00401826 MOV EBP,ESP
0187:00401828 ADD ESP,BYTE -24
0187:0040182B
XOR EAX,EAX
0187:0040182D MOV
[EBP-04],EAX
0187:00401830 XOR EDX,EDX
0187:00401832
MOV [EBP-08],EDX
0187:00401835 MOV
ECX,[EBP+10]
0187:00401838 MOV [EBP-14],ECX
0187:0040183B MOV EAX,[EBP+14] <---這是用"M"查表得到的18
0187:0040183E MOV [EBP-20],EAX <---Save
Here
0187:00401841 MOV EDX,[EBP+18] <---這是用"o"查表得到的340
0187:00401844 MOV [EBP-24],EDX <---Save
Here
0187:00401847 XOR ECX,ECX
0187:00401849
MOV [EBP-1C],ECX <---計數器
0187:0040184C
XOR EAX,EAX
0187:0040184E MOV
[EBP-18],EAX
0187:00401851 MOV EDX,[EBP-08]
0187:00401854 SHR EDX,10
0187:00401857 XOR
EDX,[EBP-08]
0187:0040185A MOV [EBP-0C],EDX
0187:0040185D MOV ECX,[EBP-0C]
0187:00401860
AND ECX,[EBP-20]
0187:00401863 MOV
[EBP-10],ECX
0187:00401866 MOV EAX,[EBP-24]
0187:00401869 AND [EBP-0C],EAX
0187:0040186C
MOV EDX,[EBP-14] <---指向Call 1結果
0187:0040186F
MOV ECX,[EBP-18]
0187:00401872 MOV
EAX,[EDX+ECX*4] <---取第1個dword
0187:00401875
MOV EDX,[EBP-10]
0187:00401878 SHL
EDX,10
0187:0040187B XOR EDX,[EBP-10]
0187:0040187E XOR EDX,[EBP-08]
0187:00401881
XOR EAX,EDX
0187:00401883 MOV
[EBP-10],EAX
0187:00401886 MOV ECX,[EBP-14]
0187:00401889 MOV EAX,[EBP-18]
0187:0040188C
MOV EDX,[ECX+EAX*4+04] <---取第2個dword
0187:00401890
MOV ECX,[EBP-0C]
0187:00401893 SHL
ECX,10
0187:00401896 XOR ECX,[EBP-0C]
0187:00401899 XOR ECX,[EBP-08]
0187:0040189C
XOR EDX,ECX
0187:0040189E MOV
[EBP-0C],EDX
0187:004018A1 MOV EAX,[EBP-0C]
0187:004018A4 SHR EAX,04
0187:004018A7 MOV
EDX,[EBP-0C]
0187:004018AA SHL EDX,1C
0187:004018AD OR EAX,EDX
0187:004018AF
MOV [EBP-0C],EAX
0187:004018B2 MOV
ECX,[EBP-0C]
0187:004018B5 AND ECX,BYTE
+3F
0187:004018B8 MOV EAX,[ECX*4+0047D5A4]
<---經運算後查表
0187:004018BF MOV EDX,[EBP-0C]
0187:004018C2 SHR EDX,08
0187:004018C5 AND
EDX,BYTE +3F
0187:004018C8 OR EAX,[EDX*4+0047D7A4]
0187:004018CF MOV ECX,[EBP-0C]
0187:004018D2
SHR ECX,10
0187:004018D5 AND
ECX,BYTE +3F
0187:004018D8 OR EAX,[ECX*4+0047D9A4]
0187:004018DF MOV EDX,[EBP-0C]
0187:004018E2
SHR EDX,18
0187:004018E5 AND
EDX,BYTE +3F
0187:004018E8 OR EAX,[EDX*4+0047DBA4]
0187:004018EF MOV ECX,[EBP-10]
0187:004018F2
AND ECX,BYTE +3F
0187:004018F5 OR
EAX,[ECX*4+0047D4A4] <---表3開始,請參照序號產生器的DATA4
0187:004018FC
MOV EDX,[EBP-10]
0187:004018FF SHR
EDX,08
0187:00401902 AND EDX,BYTE +3F
0187:00401905 OR EAX,[EDX*4+0047D6A4]
0187:0040190C
MOV ECX,[EBP-10]
0187:0040190F SHR
ECX,10
0187:00401912 AND ECX,BYTE +3F
0187:00401915 OR EAX,[ECX*4+0047D8A4]
0187:0040191C
MOV EDX,[EBP-10]
0187:0040191F SHR
EDX,18
0187:00401922 AND EDX,BYTE +3F
0187:00401925 OR EAX,[EDX*4+0047DAA4]
0187:0040192C
XOR [EBP-04],EAX
0187:0040192F MOV
EAX,[EBP-04]
0187:00401932 SHR EAX,10
0187:00401935 XOR EAX,[EBP-04]
0187:00401938
MOV [EBP-0C],EAX
0187:0040193B MOV
ECX,[EBP-0C]
0187:0040193E AND ECX,[EBP-20]
0187:00401941 MOV [EBP-10],ECX
0187:00401944
MOV EAX,[EBP-24]
0187:00401947 AND
[EBP-0C],EAX
0187:0040194A MOV EDX,[EBP-14]
0187:0040194D MOV ECX,[EBP-18]
0187:00401950
MOV EAX,[EDX+ECX*4+08] <---取第3個dword
0187:00401954
MOV EDX,[EBP-10]
0187:00401957 SHL
EDX,10
0187:0040195A XOR EDX,[EBP-10]
0187:0040195D XOR EDX,[EBP-04]
0187:00401960
XOR EAX,EDX
0187:00401962 MOV
[EBP-10],EAX
0187:00401965 MOV ECX,[EBP-14]
0187:00401968 MOV EAX,[EBP-18]
0187:0040196B
MOV EDX,[ECX+EAX*4+0C] <---取第4個dword
0187:0040196F
MOV ECX,[EBP-0C]
0187:00401972 SHL
ECX,10
0187:00401975 XOR ECX,[EBP-0C]
0187:00401978 XOR ECX,[EBP-04]
0187:0040197B
XOR EDX,ECX
0187:0040197D MOV
[EBP-0C],EDX
0187:00401980 MOV EAX,[EBP-0C]
0187:00401983 SHR EAX,04
0187:00401986 MOV
EDX,[EBP-0C]
0187:00401989 SHL EDX,1C
0187:0040198C OR EAX,EDX
0187:0040198E
MOV [EBP-0C],EAX
0187:00401991 MOV
ECX,[EBP-0C]
0187:00401994 AND ECX,BYTE
+3F
0187:00401997 MOV EAX,[ECX*4+0047D5A4]
<---查表3
0187:0040199E MOV EDX,[EBP-0C]
0187:004019A1 SHR EDX,08
0187:004019A4 AND
EDX,BYTE +3F
0187:004019A7 OR EAX,[EDX*4+0047D7A4]
0187:004019AE MOV ECX,[EBP-0C]
0187:004019B1
SHR ECX,10
0187:004019B4 AND
ECX,BYTE +3F
0187:004019B7 OR EAX,[ECX*4+0047D9A4]
0187:004019BE MOV EDX,[EBP-0C]
0187:004019C1
SHR EDX,18
0187:004019C4 AND
EDX,BYTE +3F
0187:004019C7 OR EAX,[EDX*4+0047DBA4]
0187:004019CE MOV ECX,[EBP-10]
0187:004019D1
AND ECX,BYTE +3F
0187:004019D4 OR
EAX,[ECX*4+0047D4A4]
0187:004019DB MOV EDX,[EBP-10]
0187:004019DE SHR EDX,08
0187:004019E1
AND EDX,BYTE +3F
0187:004019E4 OR
EAX,[EDX*4+0047D6A4]
0187:004019EB MOV ECX,[EBP-10]
0187:004019EE SHR ECX,10
0187:004019F1
AND ECX,BYTE +3F
0187:004019F4 OR
EAX,[ECX*4+0047D8A4]
0187:004019FB MOV EDX,[EBP-10]
0187:004019FE SHR EDX,18
0187:00401A01
AND EDX,BYTE +3F
0187:00401A04 OR
EAX,[EDX*4+0047DAA4]
0187:00401A0B XOR [EBP-08],EAX
0187:00401A0E ADD DWORD [EBP-18],BYTE +04
0187:00401A12 CMP DWORD [EBP-18],BYTE +20 <---迴圈8次,每次處理4個dword
0187:00401A16 JL NEAR 00401851
0187:00401A1C
MOV EAX,[EBP-04]
0187:00401A1F MOV
[EBP-0C],EAX
0187:00401A22 MOV ECX,[EBP-08]
0187:00401A25 MOV [EBP-04],ECX
0187:00401A28
MOV EAX,[EBP-0C]
0187:00401A2B MOV
[EBP-08],EAX
0187:00401A2E INC DWORD [EBP-1C]
0187:00401A31 CMP DWORD [EBP-1C],BYTE +19
<---這是大迴圈,共25(D)次,迴圈完後
0187:00401A35 JL NEAR
0040184C 就會得到一個2個dword的資料
0187:00401A3B MOV EDX,[EBP-08]
0187:00401A3E
MOV [EBP-0C],EDX
0187:00401A41 MOV
ECX,[EBP-04]
0187:00401A44 SHR ECX,1
0187:00401A46 MOV EAX,[EBP-04]
0187:00401A49
SHL EAX,1F
0187:00401A4C OR
ECX,EAX
0187:00401A4E MOV [EBP-08],ECX
0187:00401A51
MOV EDX,[EBP-0C]
0187:00401A54 SHR
EDX,1
0187:00401A56 MOV ECX,[EBP-0C]
0187:00401A59 SHL ECX,1F
0187:00401A5C OR
EDX,ECX
0187:00401A5E MOV [EBP-04],EDX
0187:00401A61 AND DWORD [EBP-04],BYTE -01
0187:00401A65 AND DWORD [EBP-08],BYTE -01
0187:00401A69
MOV EAX,[EBP-08]
0187:00401A6C SHR
EAX,1
0187:00401A6E XOR EAX,[EBP-04]
0187:00401A71 AND EAX,55555555
0187:00401A76
MOV [EBP-0C],EAX
0187:00401A79 MOV
EDX,[EBP-0C]
0187:00401A7C XOR [EBP-04],EDX
0187:00401A7F MOV ECX,[EBP-0C]
0187:00401A82
ADD ECX,ECX
0187:00401A84 XOR
[EBP-08],ECX
0187:00401A87 MOV EAX,[EBP-04]
0187:00401A8A SHR EAX,08
0187:00401A8D XOR
EAX,[EBP-08]
0187:00401A90 AND EAX,00FF00FF
0187:00401A95 MOV [EBP-0C],EAX
0187:00401A98
MOV EDX,[EBP-0C]
0187:00401A9B XOR
[EBP-08],EDX
0187:00401A9E MOV ECX,[EBP-0C]
0187:00401AA1 SHL ECX,08
0187:00401AA4
XOR [EBP-04],ECX
0187:00401AA7 MOV
EAX,[EBP-08]
0187:00401AAA SHR EAX,02
0187:00401AAD XOR EAX,[EBP-04]
0187:00401AB0
AND EAX,33333333
0187:00401AB5 MOV
[EBP-0C],EAX
0187:00401AB8 MOV EDX,[EBP-0C]
0187:00401ABB XOR [EBP-04],EDX
0187:00401ABE
MOV ECX,[EBP-0C]
0187:00401AC1 SHL
ECX,02
0187:00401AC4 XOR [EBP-08],ECX
0187:00401AC7 MOV EAX,[EBP-04]
0187:00401ACA
SHR EAX,10
0187:00401ACD XOR
EAX,[EBP-08]
0187:00401AD0 AND EAX,FFFF
0187:00401AD5
MOV [EBP-0C],EAX
0187:00401AD8 MOV
EDX,[EBP-0C]
0187:00401ADB XOR [EBP-08],EDX
0187:00401ADE MOV ECX,[EBP-0C]
0187:00401AE1
SHL ECX,10
0187:00401AE4 XOR
[EBP-04],ECX
0187:00401AE7 MOV EAX,[EBP-08]
0187:00401AEA SHR EAX,04
0187:00401AED XOR
EAX,[EBP-04]
0187:00401AF0 AND EAX,0F0F0F0F
0187:00401AF5 MOV [EBP-0C],EAX
0187:00401AF8
MOV EDX,[EBP-0C]
0187:00401AFB XOR
[EBP-04],EDX
0187:00401AFE MOV ECX,[EBP-0C]
0187:00401B01 SHL ECX,04
0187:00401B04
XOR [EBP-08],ECX
0187:00401B07 MOV
EAX,[EBP+08]
0187:00401B0A MOV EDX,[EBP-04]
0187:00401B0D MOV [EAX],EDX <---上面得到的資料再經過運算儲存在這裡
0187:00401B0F MOV ECX,[EBP+0C]
0187:00401B12
MOV EAX,[EBP-08]
0187:00401B15 MOV
[ECX],EAX <---Save here
0187:00401B17 XOR
EAX,EAX
0187:00401B19 MOV ESP,EBP
0187:00401B1B POP EBP
0187:00401B1C
RET
==End=============================================================
_/_/_/
_/
_/_/_/ _/_/_/ _/_/
_/_/ _/
_/ _/ _/ _/
_/ _/ _/ _/ _/ _/
_/_/_/
_/_/_/ _/ _/ _/
Sam.com
5:10 2002-3-29
相關文章
- Audio compositor註冊碼及序號產生器 (5千字)2002-04-06
- 手機號碼歸屬地介面大全2015-10-15
- 社群遊戲伴侶
V1.0註冊碼的計算,序號產生器 (30千字)2003-05-09遊戲
- 手機號碼歸屬地和運營商查詢程式碼例項2017-04-09
- Quickness 3.1
註冊演算法分析 + 序號產生器原始碼(tc2) (15千字)2003-04-13UI演算法原始碼
- Beyond Compare 1.9f註冊演算法&序號產生器 (8千字)2002-04-28演算法
- 守財奴1.9註冊分析+序號產生器原始碼2015-11-15原始碼
- 熱門好用的手機號碼歸屬地和運營商查詢2023-03-02
- 鬥地主4.0註冊演算法,序號產生器在OCG論壇
(22千字)2015-11-15演算法
- AddRemove 4GOOD 註冊演算法+序號產生器2003-07-25REMGo演算法
- 蒼鷹象棋1.0
註冊演算法分析和序號產生器2004-05-16演算法
- Universe 1.63註冊碼生成分析及序號產生器原碼(上) (2千字)2001-11-12
- 《中華壓縮 6.01》註冊碼破解及序號產生器 (14千字)2001-08-19
- ePublisher Gold v1.3 的註冊碼及序號產生器2000-12-03Go
- AntiSpy PRO 1.02
註冊演算法分析 + 序號產生器原始碼(tc2) (12千字)2003-04-11演算法原始碼
- 進位專家註冊演算法分析及序號產生器C原始碼2004-08-19演算法原始碼
- php擴充套件手機號碼歸屬地2019-02-16PHP套件
- 音樂處理acoustica2.0註冊碼破解及序號產生器 (8千字)2002-04-06
- 免費手機號碼歸屬地API查詢介面和PHP使用例項分享2015-10-15APIPHP
- winzip序號產生器 (1千字)2001-04-12
- mIRC v5.81版註冊碼演算法分析和序號產生器編寫2000-12-11演算法
- Flash Cam 1.79註冊演算法分析與序號產生器制作以及爆破方法
(7千字)2015-11-15演算法
- 印表機監控王
V3.08註冊演算法分析及序號產生器原始碼2015-11-15演算法原始碼
- 10分鐘打造超實用手機號碼歸屬地查詢神器2024-03-07
- CMailServer V3.2 註冊碼演算法及CrackCode
2000 的序號產生器 (4千字)2001-08-18AIServer演算法
- VB家庭課堂 v2.0的演算法和序號產生器2015-11-15演算法
- Android小白之retrofit實現號碼歸屬地查詢2017-08-02Android
- 序號產生器制分析: (1千字)2001-11-19
- 序號產生器合集2024-03-17
- 時間到了 v1.5 簡單註冊演算法分析
+ 序號產生器原始碼(tc2) (9千字)2003-04-12演算法原始碼
- 影音神探V2.02 bY E語言 (註冊碼與爆破附記憶體序號產生器) (8千字)2015-11-15記憶體
- winzip的通用序號產生器 (2千字)2001-12-10
- Lc3&Lc4
註冊演算法分析及序號產生器的製作2004-06-18演算法
- Advanced Dialer v2.5演算法分析(附序號產生器) (3千字)2002-04-17演算法
- NetTerm 4.2.c註冊過程分析及序號產生器制作SBS (6千字)2015-11-15
- SitMan v2.0 beta版的序號產生器(TC2.0編譯) (3千字)2001-10-28編譯
- 美萍安全衛士V8.45序號產生器制作分析過程,及序號產生器! (11千字)2001-10-28
- Gif2Swf Ver 2.1 TC20序號產生器 && MASM32序號產生器 (4千字)2001-12-10ASM