AntiSpy PRO 1.02 註冊演算法分析 + 序號產生器原始碼(tc2) (12千字)
AntiSpy PRO 1.02 註冊演算法分析 + 序號產生器原始碼(tc2)
破解目標:AntiSpy PRO 1.02
官方主頁:http://www.antispypro.com/
軟體簡介:AntiSpy 可以幫你清除Cookies、瀏覽網站紀錄、網路快取檔案、Windows作業系統中的開啟程式紀錄、最近開啟檔案。
下載地址:http://www.antispypro.com/antispy/antispypro.exe
使用工具:PEiD 0.8、W32Dasm、Ollydbg
1.09b 漢化版、Windows 自帶的計算器、32bit Calculator 1.6 by cybult、UltraEdit
作者:炎之川[BCG]
時間:2003.4.10
主頁:http://skipli.yeah.net/
宣告: 此文僅用於學習及交流,若要轉載請保持文章完整。
經 PEiD 0.8 檢查可知,AntiSpy PRO 的主程式為 VC++ 6.0 編寫且無殼,W32Dasm 反彙編,一時似乎看不出什麼東西,所以直接用
OD 裝入程式。載入完成後,在 CPU 視窗中右擊,選擇“搜尋”->“字串參考”,然後在出現的視窗中搜尋到了軟體註冊出錯的提示,雙擊之,進入對應的程式碼區。
稍作分析後,在 4157C2 處下斷點,然後 Ctrl+F2 重新載入程式,F9 執行,輸入註冊名及假註冊碼:
Name: lovefire[BCG]
Serial: 78787878
(; 後是 Ollydbg 所分析的內容,// 後是我加的註釋,文中數值均為16進位制值)
004157C2 . 68 D8B34500 PUSH AntiSpyP.0045B3D8
; SE handler installation
//下斷點
004157C7 . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
004157CD
. 50 PUSH EAX
004157CE . 64:8925
000000>MOV DWORD PTR FS:[0],ESP
004157D5 . 83EC 0C
SUB ESP,0C
004157D8 . 56
PUSH ESI
004157D9 . 8BF1 MOV ESI,ECX
004157DB . E8 E7080400 CALL AntiSpyP.004560C7
004157E0
. 8B48 04 MOV ECX,DWORD PTR DS:[EAX+4]
004157E3
. E8 BB320300 CALL AntiSpyP.00448AA3
004157E8 . A1 34744700
MOV EAX,DWORD PTR DS:[477434]
004157ED . C74424 18 0000>MOV
DWORD PTR SS:[ESP+18],0
004157F5 . 894424 08 MOV
DWORD PTR SS:[ESP+8],EAX
004157F9 . 894424 04 MOV
DWORD PTR SS:[ESP+4],EAX
004157FD . 8D4424 08 LEA
EAX,DWORD PTR SS:[ESP+8]
00415801 . 8D8E 88010000 LEA ECX,DWORD
PTR DS:[ESI+188]
00415807 . 50
PUSH EAX
00415808 . C64424 1C 02 MOV BYTE PTR SS:[ESP+1C],2
0041580D . E8 914D0300 CALL AntiSpyP.0044A5A3
00415812
. 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4]
00415816
. 51 PUSH ECX
00415817 . 8D8E
98000000 LEA ECX,DWORD PTR DS:[ESI+98]
0041581D . E8 814D0300
CALL AntiSpyP.0044A5A3
00415822 . 8B5424 08
MOV EDX,DWORD PTR SS:[ESP+8] //假碼放入edx
00415826 . 8B4424 04
MOV EAX,DWORD PTR SS:[ESP+4] //註冊名放入eax
0041582A
. 52 PUSH EDX //edx 入棧
0041582B
. 50 PUSH EAX //eax 入帳
0041582C
. E8 4F010000 CALL AntiSpyP.00415980 //關鍵 call!F7 跟進
00415831
. 83C4 08 ADD ESP,8
00415834 . 84C0
TEST AL,AL //呵呵,經典的比較
00415836 .
74 7D JE SHORT AntiSpyP.004158B5 //跳轉的話就886啦~~
00415838 . 6A 00 PUSH 0
; /Arg3 = 00000000
0041583A . 6A 40
PUSH 40
; |Arg2 = 00000040
0041583C . 68 285C4700 PUSH AntiSpyP.00475C28
; |Arg1 = 00475C28 ASCII "Registration
Successful!" //不跳則註冊成功
00415841 . E8 289C0300 CALL
AntiSpyP.0044F46E
; \AntiSpyP.0044F46E
00415846 . 51
PUSH ECX
00415847 . 8D5424 08 LEA EDX,DWORD
PTR SS:[ESP+8]
0041584B . 8BCC MOV
ECX,ESP
0041584D . 896424 10 MOV DWORD PTR SS:[ESP+10],ESP
00415851 . 52 PUSH EDX
00415852 . E8 D2190300 CALL AntiSpyP.00447229
00415857
. 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10]
0041585B
. B9 289C4700 MOV ECX,AntiSpyP.00479C28
00415860 . 50
PUSH EAX
00415861 . E8 CAFEFEFF
CALL AntiSpyP.00405730
00415866 . 8D4C24 0C
LEA ECX,DWORD PTR SS:[ESP+C]
0041586A . E8 451C0300 CALL
AntiSpyP.004474B4
0041586F . 51
PUSH ECX
00415870 . 8D5424 0C LEA EDX,DWORD PTR
SS:[ESP+C]
00415874 . 8BCC MOV ECX,ESP
00415876 . 896424 10 MOV DWORD PTR SS:[ESP+10],ESP
0041587A . 52 PUSH EDX
0041587B . E8 A9190300 CALL AntiSpyP.00447229
00415880
. 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10]
00415884
. B9 089C4700 MOV ECX,AntiSpyP.00479C08
00415889 . 50
PUSH EAX
0041588A . E8 A1FEFEFF
CALL AntiSpyP.00405730
0041588F . 8D4C24 0C
LEA ECX,DWORD PTR SS:[ESP+C]
00415893 . E8 1C1C0300 CALL
AntiSpyP.004474B4
00415898 . B9 289C4700 MOV ECX,AntiSpyP.00479C28
0041589D . E8 1E000100 CALL AntiSpyP.004258C0
004158A2
. B9 089C4700 MOV ECX,AntiSpyP.00479C08
004158A7 . E8
14000100 CALL AntiSpyP.004258C0
004158AC . 8BCE
MOV ECX,ESI
004158AE . E8 C93C0300
CALL AntiSpyP.0044957C
004158B3 . EB 1F
JMP SHORT AntiSpyP.004158D4
004158B5 > 6A 44
PUSH 44
004158B7 . 68 64564700 PUSH
AntiSpyP.00475664
; ASCII "AntiSpy PRO"
004158BC . 68 5C5B4700 PUSH
AntiSpyP.00475B5C
; ASCII "If you haven't ordered this software yet, please press "yes" to
get registration number.
If you already have registration number - please
press "no" and verify that you entered it correctly and try again" //註冊失敗
004158C1 . 8BCE MOV ECX,ESI
004158C3 . E8 C15A0300 CALL AntiSpyP.0044B389
004158C8
. 83F8 06 CMP EAX,6
004158CB . 75 07
JNZ SHORT AntiSpyP.004158D4
004158CD .
8BCE MOV ECX,ESI
004158CF . E8 4C000000
CALL AntiSpyP.00415920
004158D4 > 8D4C24 04
LEA ECX,DWORD PTR SS:[ESP+4]
004158D8 . C64424 18 01 MOV BYTE
PTR SS:[ESP+18],1
004158DD . E8 D21B0300 CALL AntiSpyP.004474B4
004158E2 . 8D4C24 08 LEA ECX,DWORD PTR SS:[ESP+8]
004158E6 . C64424 18 00 MOV BYTE PTR SS:[ESP+18],0
004158EB
. E8 C41B0300 CALL AntiSpyP.004474B4
004158F0 . C74424
18 FFFF>MOV DWORD PTR SS:[ESP+18],-1
004158F8 . E8 CA070400
CALL AntiSpyP.004560C7
004158FD . 8B48 04
MOV ECX,DWORD PTR DS:[EAX+4]
00415900 . E8 B3310300 CALL
AntiSpyP.00448AB8
00415905 . 8B4C24 10 MOV ECX,DWORD
PTR SS:[ESP+10]
00415909 . 5E
POP ESI
0041590A . 64:890D 000000>MOV DWORD PTR FS:[0],ECX
00415911
. 83C4 18 ADD ESP,18
00415914 . C3
RETN
-----------------------------------------------------------------------------
進入 41582C 的關鍵 call:
00415980 /$ 64:A1 00000000 MOV EAX,DWORD
PTR FS:[0]
00415986 |. 6A FF PUSH
-1
00415988 |. 68 F8B34500 PUSH AntiSpyP.0045B3F8
0041598D |. 50 PUSH EAX
0041598E
|. 64:8925 000000>MOV DWORD PTR FS:[0],ESP
00415995 |. 53
PUSH EBX
00415996 |. 56
PUSH ESI
00415997 |. 57
PUSH EDI
00415998 |. 8B7C24 1C MOV
EDI,DWORD PTR SS:[ESP+1C] //註冊名放入edi
0041599C |. B9 D0A54A27
MOV ECX,274AA5D0 //ecx 賦值為 274AA5D0
004159A1 |. 8A07
MOV AL,BYTE PTR DS:[EDI] //取 edi 中的字元
004159A3
|. 84C0 TEST AL,AL //比較是否為0(這裡估計是判斷有沒有輸入註冊名)
004159A5 |. 74 1E JE SHORT AntiSpyP.004159C5
//為0則跳,這裡一定不能跳轉…
//計算開始
004159A7 |> 0FBEF0
/MOVSX ESI,AL //al 送 esi,al 中是註冊名
004159AA |. 8BC6
|MOV EAX,ESI //esi 送 eax,註冊名字元送回 eax
004159AC
|. BB 11000000 |MOV EBX,11 //ebx=11
004159B1 |.
99 |CDQ //edx雙字擴充套件(清零)
004159B2
|. F7FB |IDIV EBX //eax=eax/11,餘數放入 edx
004159B4 |. 8BC1 |MOV EAX,ECX
//eax = ecx,第一次ecx 為迴圈前賦的值 274AA5D0,第二次開始為上一次累積的值
004159B6 |. 8BCA
|MOV ECX,EDX //ecx=edx,edx 為上面除法運算的餘數
004159B8
|. D3E0 |SHL EAX,CL //邏輯左移cl位,cl 為上面除法運算的餘數,等於
cl 次 *2 運算
004159BA |. 33C6 |XOR
EAX,ESI //eax 異或 esi,esi 為註冊名字元的 ASCII 值
004159BC |. 47
|INC EDI //edi+1,edi中是註冊名,所以這是為了下面取下一位的註冊名字元作準備
004159BD |. 8BC8 |MOV ECX,EAX
//eax的值放入ecx,留待下次迴圈使用
004159BF |. 8A07
|MOV AL,BYTE PTR DS:[EDI] //從 edi 中取下一位註冊名的字元
004159C1 |. 84C0
|TEST AL,AL //比較 al 是否為0
004159C3
|.^75 E2 \JNZ SHORT AntiSpyP.004159A7
//不為0就跳回去繼續迴圈。當取完註冊名字元後的下一次迴圈時al將為0,故此時才不再迴圈
//演算法結束
//所有迴圈完成後,eax 中儲存的就是真正的註冊碼。
004159C5 |> 8B15 34744700 MOV EDX,DWORD PTR DS:[477434]
; AntiSpyP.00477448
004159CB
|. 895424 1C MOV DWORD PTR SS:[ESP+1C],EDX
004159CF
|. 51 PUSH ECX
004159D0 |.
8D4424 20 LEA EAX,DWORD PTR SS:[ESP+20]
004159D4
|. 68 805C4700 PUSH AntiSpyP.00475C80
; ASCII "%08X"
004159D9 |.
50 PUSH EAX
004159DA |. C74424
20 0000>MOV DWORD PTR SS:[ESP+20],0
004159E2 |. E8 FAF60200
CALL AntiSpyP.004450E1
004159E7 |. 8B4C24 2C MOV
ECX,DWORD PTR SS:[ESP+2C] ; | //假碼放入
ecx
004159EB |. 8B5424 28 MOV EDX,DWORD PTR SS:[ESP+28]
; | //真碼放入 edx
004159EF |.
51 PUSH ECX
; |Arg2
004159F0 |. 52 PUSH
EDX
; |Arg1
004159F1 |. E8 DC120200
CALL AntiSpyP.00436CD2
; \AntiSpyP.00436CD2 //比較真假註冊碼
004159F6 |. 83C4
14 ADD ESP,14
004159F9 |. 8D4C24 1C
LEA ECX,DWORD PTR SS:[ESP+1C]
004159FD |. 85C0
TEST EAX,EAX
004159FF |. 0F94C3
SETE BL
00415A02 |. C74424 14 FFFF>MOV DWORD PTR SS:[ESP+14],-1
00415A0A |. E8 A51A0300 CALL AntiSpyP.004474B4
00415A0F
|. 8B4C24 0C MOV ECX,DWORD PTR SS:[ESP+C]
00415A13
|. 5F POP EDI
00415A14 |.
8AC3 MOV AL,BL
00415A16 |. 5E
POP ESI
00415A17 |. 64:890D 000000>MOV
DWORD PTR FS:[0],ECX
00415A1E |. 5B
POP EBX
00415A1F |. 83C4 0C ADD ESP,0C
00415A22 \. C3 RETN
演算法總結如下:
設註冊名位數為n,即有效迴圈也為n次,存在 N0、N1、N2、N3、N4、N5…其中 N0=274AA5D0,則:
N(n)=(N(n-1) shl ((註冊名ASCII) mod 11)) xor (註冊名ASCII)
最後的 N(n) 就是註冊碼
試按照我輸入的註冊名“lovefire[BCG]”,列舉如下,
第一位註冊名“l”,N(1)=(274AA5D0 shl ((6C)
mod 11)) xor 6C = (274AA5D0 shl 6) xor 6C = D2A97400 xor 6C = D2A9746C
第二位註冊名“o”,N(2)=(D2A9746C
shl ((6F) mod 11)) xor 6F = (D2A9746C shl 9) xor 6F = 52E8D800 xor 6F = 52E8D86F
……
最後一位註冊名“]”,N(12)=(0210025F shl ((5D) mod 11)) xor 5D = (D2A9746C
shl 8) xor 5D = 10025F00 xor 5D = 10025F5D
所以得出正確的註冊碼:10025F5D
至此 AntiSpy PRO 1.02 演算法分析完成,一組可用的註冊碼:Name: lovefire[BCG] Serial: 10025F5D
註冊資訊儲存:
[HKEY_LOCAL_MACHINE\SOFTWARE\HT\AntiSpyPRO]
"strRegNum"="10025F5D"
"strUserName"="lovefire[BCG]"
----------------------------------------------------------
序號產生器原始碼(TC 2.0)
/* KeyGen by 炎之川[BCG],2003.4.11 */
/* 感謝hoto兄、菩提兄、小樓兄回答我提的弱智問題^^
*/
#include <stdio.h>
main()
{
char name[255];
int name_len,i;
unsigned long sn1=0x274AA5D0;
clrscr(); /*非tc的C編譯程式可能不能識別此指令*/
printf("
_/_/_/ _/_/_/ _/_/_/\n _/
_/ _/ _/\n _/_/_/ _/
_/ _/_/\n _/ _/ _/
_/ _/\n_/_/_/ _/_/_/
_/_/_/\n\n -= AntiSpy PRO 1.02 KeyGen by lovefire[BCG] =-\n\n\nPlease enter your
name: ");
gets(name);
name_len=strlen(name);
if (name_len>0)
{
for (i=0;i<name_len;i++)
{
sn1=(sn1<<(name[i]%0x11))^name[i];
}
printf("\nok, try this serial: %08lX\n",sn1);
printf("\n\nNOTE: serial
only for test!");
printf("\nIf you like it, buy it to support the soft's author!");
}
else
{
printf("\nI
think you should tell me your name first ;)\n");
}
printf("\n\nhave fun^^\nwelcome to http://skipli.yeah.net/");
getch();
}
----------------------------------------------------------
炎之川
屬於中國破解組織BCG(Beginner's Cracking Group)
_/_/_/ _/_/_/ _/_/_/
_/
_/ _/ _/
_/_/_/ _/
_/ _/_/
_/ _/ _/
_/ _/
_/_/_/ _/_/_/
_/_/_/
相關文章
- Quickness 3.1
註冊演算法分析 + 序號產生器原始碼(tc2) (15千字)2003-04-13UI演算法原始碼
- 時間到了 v1.5 簡單註冊演算法分析
+ 序號產生器原始碼(tc2) (9千字)2003-04-12演算法原始碼
- 守財奴1.9註冊分析+序號產生器原始碼2015-11-15原始碼
- SysSync Version 1.02簡單演算法分析+VB序號產生器原始碼 (8千字)2015-11-15演算法原始碼
- 進位專家註冊演算法分析及序號產生器C原始碼2004-08-19演算法原始碼
- Advanced Emailer 2.1 簡單演算法分析+序號產生器原始碼(tc2)2015-11-15AI演算法原始碼
- eBook Edit Pro 3.21 演算法分析及序號產生器原始碼2003-03-13演算法原始碼
- Universe 1.63註冊碼生成分析及序號產生器原碼(上) (2千字)2001-11-12
- 蒼鷹象棋1.0
註冊演算法分析和序號產生器2004-05-16演算法
- Audio compositor註冊碼及序號產生器 (5千字)2002-04-06
- 印表機監控王
V3.08註冊演算法分析及序號產生器原始碼2015-11-15演算法原始碼
- mIRC v5.81版註冊碼演算法分析和序號產生器編寫2000-12-11演算法
- Flash Cam 1.79註冊演算法分析與序號產生器制作以及爆破方法
(7千字)2015-11-15演算法
- Beyond Compare 1.9f註冊演算法&序號產生器 (8千字)2002-04-28演算法
- QuickCD V1.0.4演算法分析+序號產生器原始碼2015-11-15UI演算法原始碼
- 鬥地主4.0註冊演算法,序號產生器在OCG論壇
(22千字)2015-11-15演算法
- 序號產生器制分析: (1千字)2001-11-19
- 《中華壓縮 6.01》註冊碼破解及序號產生器 (14千字)2001-08-19
- AddRemove 4GOOD 註冊演算法+序號產生器2003-07-25REMGo演算法
- Uninstall
Manager V4.20簡單註冊演算法+加密演算法分析+序號產生器C++原始碼:-)2004-10-30演算法加密C++原始碼
- ePublisher Gold v1.3 的註冊碼及序號產生器2000-12-03Go
- Lc3&Lc4
註冊演算法分析及序號產生器的製作2004-06-18演算法
- 音樂處理acoustica2.0註冊碼破解及序號產生器 (8千字)2002-04-06
- 《AceReader V4.5》破文+序號產生器原始碼 (12千字)2015-11-15原始碼
- Personal Antispy 1.14 註冊演算法分析2015-11-15演算法
- NetTerm 4.2.c註冊過程分析及序號產生器制作SBS (6千字)2015-11-15
- MobileSearch(手機號碼歸屬地查詢) v2.0註冊演算法,附序號產生器~~~~~~
(30千字)2002-03-29演算法
- CMailServer V3.2 註冊碼演算法及CrackCode
2000 的序號產生器 (4千字)2001-08-18AIServer演算法
- 社群遊戲伴侶
V1.0註冊碼的計算,序號產生器 (30千字)2003-05-09遊戲
- HappyIcon序號產生器TC原始碼 (1千字)2001-04-08APP原始碼
- winzip序號產生器 (1千字)2001-04-12
- CoolClock V1.02註冊演算法分析 ---OCG (14千字)2015-11-15演算法
- IrfanView 序號產生器分析(初級版)
(13千字)2015-11-15View
- 美萍安全衛士V8.45序號產生器制作分析過程,及序號產生器! (11千字)2001-10-28
- 超級公式計算器 V4.5x 演算法分析+序號產生器原始碼2015-11-15公式演算法原始碼
- EmEditor V3.29和它的序號產生器 (12千字)2015-11-15
- Instant Source 註冊演算法分析+註冊器原始碼2015-11-15演算法原始碼
- URL Address Book V6.05簡單演算法分析+VB序號產生器原始碼 (10千字)2015-11-15演算法原始碼