用“破解除錯”的方法修改序號產生器(SDK)功能――獻給自由的FCG和所有Cracker (23千字)
標 題:用“破解除錯”的方法修改序號產生器(SDK)功能——獻給自由的FCG和所有Cracker (23千字)
發信人:La0Qian
時 間:2004-02-09 13:07:34
詳細資訊:
【題目】用“破解除錯”的方法修改序號產生器(SDK)功能――獻給自由的FCG和所有Cracker
因為我們FCG的“家”總是居無定所,只好發表在看雪這裡了。
【* * 作者】 laoqian[FCG]
【作者郵箱】 lao-qian@163.com
【作者主頁】 FCGchina.126.com
【使用工具】 Delphi 7 Mini-Edition,Microsoft Visual C++ 6.0,ollydbg 1.09 ,W32DASM10,UltraEdit8.0
【* * 平臺】 Win98se/2000/XP(有小bug)
【軟體名稱】 FCG 序號產生器 SDK
【下載地址】 FCGchina.126.com
【破解宣告】 我是一隻小小鳥,偶得一點心得,願與大家分享:)
------------------------------------------------------------------
【* * 內容】
本人在做社群遊戲伴侶V1.11(聯眾,邊鋒遊戲牌類記牌器,註冊後全部功能可用,破文詳見看雪論壇精華)的序號產生器時,採用了本組織FCG的序號產生器模板(FCG SDK模板 1.5.1.126 for Delphi,you_known[FCG]開發)。在編制過程中,由於社群遊戲伴侶V1.11需分別註冊聯眾,邊鋒使用者,而此模板只提供一個註冊視窗,當時匆忙中只好寫了2個序號產生器發布。某天無聊又無事,又很懶於破解軟體(也主要因為是讓那幾個CCG的crackme搞得我頭暈對CRACk幾乎喪失信心),突發念頭,把以前的2個序號產生器合併為一。
仔細看了看you_known[FCG]序號產生器模板(Delphi版SDK),研究發現一些有趣的東東,不敢敝帚自珍,遂寫下這篇拙文。
首先看到下面you_known[FCG]的宣告瞭嗎?
///////////////////////////////////////////
名稱: FCG SDK模板 1.5.1.126 for Delphi
作者: Mystery(you_known[FCG])
描述:
沒有使用VCL,沒有使用類,純API寫成,移植簡單,對資源稍加修改
即可輕易轉為Visual C,MASM,Borland C等源程式。本原始碼僅供FCG
成員內部使用,作為FCG成員,你可以自由修改此程式碼(不要移除本說
明內容),若你修改了其中的不足,請寄我一份(you_known@163.com)。
嚴禁非法傳播,或者提供給組織外部的人使用!!
僅以此獻給自由的[FCG]。
版權: Copyright(C)2000-2003 Mystery Studio.
///////////////////////////////////////////
$$$$因此我不能釋出全部程式碼!只發布我新增的相關程式碼。!!!!看不明白處,請見諒。
或者你努力加入FCG,你即可獲得全部原始碼!
願自由的[FCG]發展壯大!!!自由萬歲!!!
*****************
說實話,在接觸Crack以前,我基本不會程式設計!中學、大學學過一些basic和fortrun,考完試,就還給老師了。工作後,也只是用計算機而已。而10年之後喜歡了Crack,不知不覺就耳聞目睹,居然能看懂程式了,當然是關於破解的程式!因喜歡Crack,而進而程式設計序,大有人在吧?^_^
但這次是我第一次真正程式設計,雖然是在別人的基礎上。此前,我甚至不會用Delphi、Visual C+等,這次下來,基本通了一遍。感謝Crack,此後我可以說我會程式設計了!!!
不說了,再說有灌水之嫌了。
****************
廢話少說,言歸正傳:
****************
為什麼叫 用“破解除錯”的方法修改序號產生器功能?
因為我說過此前我不會程式設計,對API函式程式設計更是一竅不通!而這次我是用除錯(類似設斷點)的方法。
用過Delphi7的都知道,它有一項Debug功能,其中功能鍵和ollydbg差不多,F9執行,F8單步跟蹤,F5設斷,...,其中還有View CPU除錯視窗,雖不如OD全,但什麼eax,edx等都在,甚至還有彙編視窗!這對於我來說,足夠了,因為我有FCG SDK模板原始碼!
你會說,為什麼這麼費勁呢?因為這個序號產生器體積小啊!編譯後才幾十kB,你用自己編的試試,少說幾百kB!
第一步,首先來分析資源
SDK壓縮包中的說明: res15.rc 資源原始檔,只能手工修改。
好,可我不會手工修改!怎麼辦?我要新增很多東東啊!
沒辦法,只好先編譯再說!把資源原始檔編譯成res15.res。
我記得某位大俠說過編譯後的res檔案已經與語言無關了,這時我們用Visual C就可以開啟res15.res看看!列位看官說了,為什麼不用VC6直接開啟res15.rc?這裡的res15.rc是用Delphi處理的,VC6不認,而Delphi卻沒有開啟rc檔案的功能,明白了?
開啟後,你可以隨便修改了,就這麼簡單!新增,刪除,改風格...不要說你不會用VC6,我也是第一次用!
但是重要的一點,不要隨便改那些單元屬性的ID,新增更改的都要記住那些ID,VC很方便得到ID。這是後話了。
第二步,來看看.dpr檔案(Delphi的原始碼)了,這是首先靜態分析,和破解一樣。
用Delphi7開啟.dpr檔案,看到如下(見後):
我為了寫方便,就不分別先後了,只是說說我的思路。以下程式碼是我修改過的。
一. 看到“全域性變數、常量資料宣告”,你不難理解,這是為了序號產生器編制方便。
二. 重點看到“資源常量定義”那裡,發現什麼,這些就是我上面說的各個單元的ID!其中著名增加的是我新增的,就是我在第一步修改資源時得到的ID!
三. 如果我們只是到這裡,我們的工作幾乎就可以完成了:
1.我們新增2個註冊碼Edit框,改幾個按鈕值。
2.增加幾個變數,常量,再把裡面的幾個case of選項改改。
3.新增序號產生器的子程式。
4.編譯完工。
這是地球人都會的!^_^
第三步. 本文核心,動態除錯!
到了這裡,這裡序號產生器基本已經做好了。
但是我要給他新增功能:
1.輸入使用者名稱同時,可實時顯示註冊碼。(如果實現好像很方便,也很...)
2.增加幾項超級連結效果。(只是表面文章而已)
3.直接寫入登錄檔,完成註冊。(也是為了方便)
這個可沒有原始碼了,要自己寫。重點是第一項難辦,第二、三項好辦。
解決1. 輸入使用者名稱,可實時顯示註冊碼。
仔細觀察,我們可以在//主對話方塊過程函式//發現臭名昭著的window訊息函式WM_COMMAND,它是什麼地球人都知道!而關鍵就在那裡。
我們在這個WM_COMMAND那裡下面的“case wParam of”那行F5設斷點。F9執行,斷點攔住了,但是F8按了好久,還沒有進入程式。忽然想起來,這個WM_COMMAND訊息函式是誰都用的,關掉斷點。F9進入序號產生器。
重新在那裡F5設斷點,點選任一按鈕,斷下。
這時你看一下wParam的值,就是那些按鈕ID!怎樣看?Delphi7提供的,滑鼠在“wParam”上面停留。
明白了,就是這樣簡單,那按鈕ID我們都看到了,點哪個執行那個ID選項!
此刻,新增case wParam of的選項,選項是ID為使用者名稱的輸入框(Edit屬性),...
這時我點選註冊使用者名稱的輸入框(Edit屬性),馬上中斷,可是它卻不執行我們新增的case of的選項!!也就是說,反覆除錯,檢視wParam的值也不是那Edit框的ID,而是亂七八糟的數!
我們進入Debug功能View CPU除錯視窗,看看,發現eax的值明明是我們的ID(顯示16進位制)啊?但是F8跟蹤下去,就是不執行我們新增的ID項,檢查程式也沒錯。
什麼原因呢?找啊找,找到一個好朋友――
開啟看雪的書第一版,找到WM_COMMAND函式的解釋(手頭只有這書),看到了Hiword(wParam),Loword(wParam)的說明,試試改為新增case Loword(wParam) of選項,OK!
我們點選註冊使用者名稱的輸入框(Edit屬性),這次中斷了!我找到你了
新增我們的程式碼,再說後面的那些都是多餘了!
解決2. 增加幾項超級連結效果
超級連結效果SDK裡有子程式,在子程式裡但是他是設的常量(如網站地址等),我要增加幾項,常量就不行了。
為了利用他的子程式,當然,我也不會編新的!我們還是用上面的思路。
這次是Text屬性框,設斷,點選馬上中斷,可是無論在case Loword(wParam) of還是case wParam of裡面,都沒有執行我們的ID!我不明白了。
只好把Text屬性改成Edit屬性,這樣,就中斷了,後面同上理。
自己看看我的更改程式碼,你會理解我的思路。
解決3.直接寫入登錄檔,完成註冊。
我們利用它原來的註冊按鈕改造,新增自己的子程式,完成,不用除錯斷點了,程式碼自己看吧。
btw:如果不是寫入登錄檔,而是寫在其他地方,或者是keyfile等,你都可以如法炮製自己新增。
////////////////////////////////////////////////////////////////////*)
{$J+}
program Keygen;
uses Windows, Messages, ShellAPI;
{$R res15.res}
var
////////////////////
//全域性變數資料宣告// ;不要修改全域性變數!^_^明白了可以改!^_^
////////////////////
szName:array[0..54] of char; //輸入使用者名稱
szNamebak:array[0..54] of char; //輸入使用者名稱 新增
szCode:array[0..54] of char; //輸出註冊碼
namelz,namebf,snlz,snbf: PAnsiChar; //輸出使用者名稱,註冊碼,寫入登錄檔
Reg_Nag:integer; //聯眾邊鋒標誌 ,加入標誌是因為有2個序號產生器,寫2個登錄檔!
S_link: PAnsiChar; //超鏈變數,增加!!
flAgree:BOOL = FALSE; //使用者接受協議標誌
略....
h_Icon: HICON; //例項控制程式碼
//*lines 60*********以下可以自己修改***************************************
const
////////////////
//常量資料宣告//
////////////////
(*顏色設定*)
clBackground = $000000 //背景顏色
略....
(*主對話方塊*)
略....
szBy ='http://www.ptcn.com';//軟體開發者
szCracker ='laoqian[FCG]';//解密人
szCrackeremail ='mailto:lao-qian@163.com'; //解密人email
略....
szLink ='http://FCGchina.126.com';//主頁地址
略....
(*協議對話方塊*)
szLicenseCaption='終端使用者許可協議'; //協議對話方塊標題
略....
(*關於對話方塊*)
szAboutCaption ='關於'; //關於對話方塊標題
略....
'〖模板修改〗'#10'by laoqian[FCG]'#10#10+
'版權所有(C)中國自由破解聯盟';
//======================================================================
//這是社群遊戲伴侶V1.2序號產生器原始碼,我以前已經發表過,只說說改正的.
//聯眾部分序號產生器程式,
//------------------------------------------------------------
procedure Calculatelz(A:PAnsiChar);
var
s1,s2,s3,s4 : string;
m,n,i,inc :integer;
c1 : char;
begin
s1:=A;
m:=length(s1);
n:=0;
for i:=1 to m do
begin
c1:=s1[i];
inc:= ord(c1);
n:=n+inc*(i+122)+i;
end;
n:=n mod 10000;
str(n,s2);
case length(s2) of //這裡說明若不足4位前面補0
1: s2:='000'+s2;
2: s2:='00'+s2;
3: s2:='0'+s2;
end; //
s3:=s1+s2;
m:=length(s3);
n:=1246;
for i:=1 to m do
begin
c1:=s3[i];
inc:= ord(c1);
n:=n+(i-1)*m+ inc*(m1)+(i-1)*(i-1);
end;
n:=n mod 10000;
if n<1000 then n:=n+6000;
str(n,s4);
lstrcpy(szCode,PAnsiChar(s4+S2));
end;
//--------------------------------------------------------
//////////////////////////////////////////////////////////////////////
//邊鋒部分序號產生器程式
procedure Calculatebf(A:PAnsiChar);
var
s1,s2,s3,s4 : string;
m,n,i,inc :integer;
c1 : char;
begin
s1:=A;
m:=length(s1);
n:=0;
for i:=1 to m do
begin
c1:=s1[i];
inc:= ord(c1);
n:=n+inc*(i+255);
end;
n:=n mod 10000;
str(n,s2);
case length(s2) of //這裡說明若不足4位前面補0
1: s2:='000'+s2;
2: s2:='00'+s2;
3: s2:='0'+s2; //
end;
s3:=s1+s2;
m:=length(s3);
n:=3210;
for i:=1 to m do
begin
c1:=s3[i];
inc:= ord(c1);
n:=n+(i-1)*m+ inc*(m1);
end;
n:=n mod 100000;
if n<10000 then n:=n+80000;
str(n,s4);
lstrcpy(szCode,PAnsiChar(s4+S2));
end;
//--------------------------------------------------------
//////////////////////////////////////////////////////////////////////
//寫入登錄檔程式,這是我增加的直接寫入登錄檔的程式碼
procedure RegCreate(A,B:PAnsiChar;Reg_Nag:integer);
var
cbDataB:integer;
hkey_reg:HKEY;
begin
cbDataB:=length(B)+1; //cbData 引數為儲存鍵值資料的長度,好像W2K,XP有用。
//鍵值資料型別為reg_sz時,鍵值資料字串長度+1
case Reg_Nag of
1:
begin
//建立子鍵
RegCreateKey(HKEY_CURRENT_USER,'Software\zgsq\lzUser',hkey_reg);
//寫入鍵值資料
RegSetValueEx(hkey_reg,A,0,reg_sz,B,cbDataB)
// 關閉
RegCloseKey(hkey_reg);
end;
2:
begin
RegCreateKey(HKEY_CURRENT_USER,'Software\zgsq\bfUser',hkey_reg);
RegSetValueEx(hkey_reg,A,0,reg_sz,B,cbDataB);
RegCloseKey(hkey_reg);
end;
end;
end;
//*lines 130********以上可以自己修改***************************************
const
////////////////
//資源常量定義// ;不要修改! ^_^明白了可以改!^_^
////////////////
MAINICON = 100
略......
IDD_MAINDLG = 2000
MAIN_DO1 = 2001 //增加
MAIN_EXIT = 2002
略......
MAIN_SOFT = 2005
MAIN_BY = 2006
MAIN_CRACKER = 2007
MAIN_DATE = 2008
MAIN_CODE1 = 2009 //增加
MAIN_NAME1 = 2010 //增加
MAIN_LINK = 2011
MAIN_COPY = 2012
MAIN_CODE2 = 2013 //增加
MAIN_NAME2 = 2014 //增加
MAIN_DO2 = 2015 //增加
略......
//////////////////////////////////////////////////////////////
//計算字串行數函式
略......
//////////////////////////////////////////////////////////////
//繪製標題欄函式
略......
//////////////////////////////////////////////////////////////
//繪製按鈕函式
略......
//////////////////////////////////////////////////////////////////
//動態顯示窗體函式
略......
//////////////////////////////////////////////////////////////////
//超連結過程函式
function LinkProc(h_Wnd: HWND; Msg, wParam, lParam: DWORD): LRESULT; stdcall;
var
l: POINTER;
begin
Result := 1;
case Msg of
WM_LBUTTONUP:
//滑鼠左鍵點選後開啟瀏覽器,定位到主頁地址
ShellExecute(0, nil, S_Link, nil, nil, 0); //原來S_Link是常量,我們改為變數
WM_NCHITTEST:
//將 WM_NCHITTEST 返回 TRUE 可以接收滑鼠動作,實現按下功能 !
Result := 1;
WM_SETCURSOR:
//更改滑鼠移動時的樣式
SetCursor(h_Cur);
else
begin
l :=pointer(GetWindowLong(h_Wnd, GWL_USERDATA));
CallWindowProc(l, h_Wnd, Msg, wParam, lParam);
end;
end;
end;
//////////////////////////////////////////////////////////////////
//字幕滾動過程函式
略......
//////////////////////////////////////////////////////////////////
//關於對話方塊過程函式
略......
//////////////////////////////////////////////////////////////////
//主對話方塊過程函式
function MainProc(hDlg: HWND; Msg, wParam, lParam: DWORD): LRESULT; stdcall;
const
rcCaption: TRECT = ();
var
略....
h_Link,h_by,h_CRACKER: HWND; //增加
略....
byUser,CRACKERUser: integer; //增加
begin
Result := 0;
case Msg of
WM_INITDIALOG:
begin
//計算標題欄矩形區域大小
略....
SetDlgItemText(hDlg, MAIN_LINK, szLink);//顯示主頁連結
SetDlgItemText(hDlg, MAIN_DATE, szDate);//顯示釋出日期
SetDlgItemText(hDlg, MAIN_SOFT, szSoft);//顯示軟體名
SetDlgItemText(hDlg, MAIN_BY, szBy);//顯示軟體開發者
SetDlgItemText(hDlg, MAIN_CRACKER, szCracker);//顯示解密人
略....
//建立並設定超連結字型
h_LinkFont := CreateFont(略....);
//顯示FCG主頁超鏈
h_Link := GetDlgItem(hDlg, MAIN_LINK);
SendMessage(h_Link, WM_SETFONT, h_LinkFont, 0);
//為其設定單獨的訊息處理過程,實現超連結效果
lUser := SetWindowLong(h_Link, GWL_WNDPROC, integer(@LinkProc));
SetWindowLong(h_Link, GWL_USERDATA, lUser);
AnimateShow(hDlg);
//顯示軟體開發者超鏈
h_by := GetDlgItem(hDlg, MAIN_by);
SendMessage(h_by, WM_SETFONT, h_LinkFont, 0);
//為其設定單獨的訊息處理過程,實現超連結效果
byUser := SetWindowLong(h_by, GWL_WNDPROC, integer(@LinkProc));
SetWindowLong(h_by, GWL_USERDATA, byUser);
AnimateShow(hDlg);
//顯示解密人超鏈
h_CRACKER := GetDlgItem(hDlg, MAIN_CRACKER);
SendMessage(h_CRACKER, WM_SETFONT, h_LinkFont, 0);
//為其設定單獨的訊息處理過程,實現超連結效果
CRACKERUser := SetWindowLong(h_CRACKER, GWL_WNDPROC, integer(@LinkProc));
SetWindowLong(h_CRACKER, GWL_USERDATA, CRACKERUser);
AnimateShow(hDlg);
end;
WM_LBUTTONDOWN:
begin
//響應滑鼠左鍵按下訊息,若在標題欄內則使窗體移動
略....
end;
WM_PAINT:
begin
//響應繪製訊息,繪製標題欄
略....
end;
WM_COMMAND: //著名的window訊息函式
begin
case wParam of //我們可以在這裡下斷點!!!!
MAIN_DO1: //宣告的ID(常量)選項,以下很多同
begin
//產生寫註冊碼按鈕按下
//獲取輸入名
GetDlgItemText(hDlg, MAIN_NAME1, szName, 55);
namelz:=szName;
if (length(namelz)>0) and (length(namelz)<54) then
begin
//計算註冊碼
Calculatelz(szName);
snlz:=szCode;
Reg_Nag:=1; //計算註冊碼聯眾標誌,加入標誌是因為有2個序號產生器,寫2個登錄檔!
if szName<>szNamebak then
//寫登錄檔
RegCreate(namelz,snlz,Reg_Nag);
end;
end;
MAIN_DO2:
begin
//產生寫註冊碼按鈕按下
//獲取輸入名
GetDlgItemText(hDlg, MAIN_NAME2, szName, 55);
namebf:=szName;
if (length(namebf)>0) and (length(namebf)<54) then
begin
//計算註冊碼
Calculatebf(szName);
namebf:=szName;
snbf:=szCode;
Reg_Nag:=2; //計算註冊碼邊鋒標誌
if szName<>szNamebak then
//寫登錄檔
RegCreate(namebf,snbf,Reg_Nag);
end;
end;
////////////////////////////////////////
//原來模板的是這樣的:
// MAIN_DO:
// begin
// //產生註冊碼按鈕按下
// //獲取輸入名
// GetDlgItemText(hDlg, MAIN_NAME, szName, 255);
// //計算註冊碼子程式
// Calculate(szName);
// //顯示註冊碼
// SetDlgItemText(hDlg, MAIN_CODE, szCode);
// end;
///////////////////////////////////////
MAIN_about :
begin
//顯示關於對話方塊
略....
end;
MAIN_EXIT:
EndDialog(hDlg, 0);
MAIN_CLOSE:
EndDialog(hDlg, 0);
end;
///////////
//重點新增//
// 下面 //
///////////
case Loword(wParam) of //我們的斷點在這裡,哈哈,不容易啊!
MAIN_NAME1: //我新增的宣告的ID(常量)選項,以下同
begin
//獲取聯眾輸入名框內動作
GetDlgItemText(hDlg, MAIN_NAME1, szName, 55);
namelz:=szName;
if (length(namelz)>0) and (length(namelz)<54) then //設定上限,防止爆機!
begin
if szName<>szNamebak then
//你看you_known[FCG]的天才構思,設定szName,szCode為陣列變數為我們提供了巨大方便!!
//這樣我們實現實時註冊碼顯示,簡直幾乎易如反掌!
//不只這一個地方!我不得不佩服他的才能,不愧是FCG第一程式設計高手!
begin
//計算
Calculatelz(szName);
//顯示註冊碼
SetDlgItemText(hDlg, MAIN_CODE1, szCode);
end;
end
//提示資訊
else SetDlgItemText(hDlg, MAIN_CODE1, '請在上面輸入聯眾使用者ID,小於55位!');
end;
MAIN_NAME2:
begin
//獲取邊鋒輸入名框內動作
GetDlgItemText(hDlg, MAIN_NAME2, szName, 55);
namebf:=szName;
if (length(namebf)>0) and (length(namebf)<54) then
begin
if szName<>szNamebak then
begin
//計算
Calculatebf(szName);
//顯示註冊碼
SetDlgItemText(hDlg, MAIN_CODE2, szCode);
end;
end
//提示資訊
else SetDlgItemText(hDlg, MAIN_CODE2, '請在上面輸入邊鋒使用者ID,小於55位!');
end;
MAIN_link: //連結的EDIT框的ID
S_link := szLink; //點選哪裡,就賦值對應網址!
MAIN_By:
S_link := szBy;
MAIN_Cracker:
S_link := szCrackeremail;
///////////
// 上面 //
//重點新增//
///////////
end;
Result := 0;
end;
WM_DRAWITEM:
begin
略....
end;
///////////////////////////////////////////////////
//響應繪製窗體內容訊息
略....
else
Result := 0;
end;
end;
//////////////////////////////////////////////////////////////////
//協議對話方塊過程函式
略......
//////////////////////////////////////////////////////////////////
//程式入口函式
begin
略....
//顯示協議對話方塊
DialogBox(h_Inst, LPCTSTR(IDD_LICENSEDLG), 0, @LicenseProc);
if (flAgree) then //如果使用者同意協議則顯示主對話方塊
DialogBox(h_Inst, LPCTSTR(IDD_MAINDLG), 0, @MainProc); // 主程式
略....
//退出程式
ExitProcess(0);
end.
--------------------------------------------------------------------------------
【* * 總結】
感謝you_known[FCG]提供了這麼好的一個程式模板,讓我們受益匪淺。
你看you_known[FCG]的天才構思,設定szName,szCode為陣列變數為我們提供了巨大方便!!這樣我們實現實時註冊碼顯示,簡直幾乎易如反掌!還有超連結過程函式,堪稱巧妙的構思,至於我不得不隱去的那些函式更是妙不可言,不只這一個地方!我不得不佩服他的才能,不愧是FCG第一程式設計高手!
如果你理解了我上面的,再加上你對API程式設計的瞭解,你已經可以自己編一個簡單的實時顯示註冊碼的序號產生器!只是介面原始一些罷了。如果不是寫入登錄檔,而是寫在其他地方,或者是keyfile,你都可以如法炮製自己新增。你還能移植到MASM,VC等上,其實ASM程式碼已經在delphi裡可以看到,只是我不會程式設計,如果你完成了或者有好的想法,給我寄一份(lao-qian@163.com)。
起初是看到國外的一些序號產生器可以輸入使用者名稱同時,可實時顯示註冊碼,覺得很酷,就想知道他是怎樣實現的,但大都是ASM的原始碼,功力太淺看不懂,因此這次鑽研了一番,主要得益於you_known[FCG]的無私奉獻。
完工之後,還有一些體會或許對大家有益:這些對於破解也有新的思路,比如有些軟體註冊是在你輸入使用者名稱同時,實時計算註冊碼,並對比結果,他的原理應該大同小異,一般都會呼叫window訊息函式WM_COMMAND,那我們找斷點豈不是可以在這裡呢?而對於編制CRackme或軟體註冊是否就更有用處呢?你可以改造一番試試。
【* * 閒話】
我玩Crack也3年了,起初只是在看雪論壇看看,今天看看,自己居然也在裡面有了那麼8、9篇文章入選了精華,也認識了不少朋友,最重要是學到了不少東西。由於日後工作將繁忙,又最近特別是渴望買車,更是抓緊掙錢,對Crack漸漸會接觸的少了,只是偶爾有朋友要求幫忙才破幾個小東東。這很可能是我最後一篇破文了,也是我給FCG和大家的禮物,當然我還會關注Crack,因為我們熱愛Free!
有時,我也特別想加入CCG,BCG等,除了功力、時間不夠,還有就是覺得:FCG雖然組織鬆散,“家”也居無定所,但Free!因為熱愛Free的人,好像都很友善樂於助人!^_^,因此在FCG裡很快樂,希望它的宗旨繼續發揚光大!
不過,如果CCG,BCG的老大們看了這篇文章,能破格批准我加入,我也會很欣然的,哈哈,...
最後,感謝看雪為我們提供這個地方,我以有此同濟師弟為榮!!!
btw:只是那些框框顏色不好,不知道怎樣改。還有序號產生器在XP裡的顯示有些小問題無法解決。
看來只有請you_known解決了。
--------------------------------------------------------------------------------
【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整, 謝謝!
\\\|///
\\ - - //
( @ @ )
+-----------------------o00o-(_)-o00o--------------------+
| |
| 獻給我喜歡遊戲的海,我相信海永遠是藍的 |
| laoqian[FCG] |
+--------------------------------0ooo--------------------+
ooo0 ( )
( ) ) /
\ ( (_/
\_)
相關文章
- 製作mIRC6.02序號產生器(給別人寫的初學者序號產生器教材) (14千字)2015-11-15
- winzip的通用序號產生器 (2千字)2001-12-10
- winzip序號產生器 (1千字)2001-04-12
- 序號產生器制分析: (1千字)2001-11-19
- supercapture3.0的版序號產生器!
(4千字)2002-04-23APT
- 俠客系統修改器 V1.21 序號產生器 (2千字)2001-09-01
- 序號產生器寫作教學。奉賢給想加入CCG和BCG的朋友。 (11千字)2001-10-21
- 《AceReader V4.5》破文+序號產生器原始碼 (12千字)2015-11-15原始碼
- EmEditor V3.29和它的序號產生器 (12千字)2015-11-15
- Kalua Cocktails 1.1完全破解,內附彙編序號產生器(用序號產生器編寫器,並有它的使用教程)
(22千字)2002-02-27AI
- 序號產生器合集2024-03-17
- 美萍安全衛士V8.45序號產生器制作分析過程,及序號產生器! (11千字)2001-10-28
- Gif2Swf Ver 2.1 TC20序號產生器 && MASM32序號產生器 (4千字)2001-12-10ASM
- 橋牌軟體Deep Finesse的序號產生器 (1千字)2015-11-15
- 用keymake制序號產生器實戰~高手莫入~~ (1千字)2001-09-30
- IrfanView 序號產生器分析(初級版)
(13千字)2015-11-15View
- AlgoLab PtVector的破解及序號產生器的編寫 (17千字)2001-05-04Go
- 一個CrackMe的破解以及序號產生器的製作
(4千字)2001-08-16
- NewsReactor 1.0 Build 5009的序號產生器制分析 (16千字)2001-08-07ReactUI
- 另類序號產生器(一MFC程式的改造心得) (3千字)2001-09-10C程式
- 用C++編寫序號產生器的一點技巧2015-11-15C++
- UltraEdit-32 8.10.1.0的破解及序號產生器的生成 (15千字)2001-05-15
- 如何製作VB程式記憶體序號產生器--國內某軟體的序號產生器(隱去軟體資訊)
(14千字)2002-08-04記憶體
- EditPlus 2.01b 序號產生器的製作 (22千字)2001-09-10
- HexDiff V2.51和它的序號產生器(MASM32) (6千字)2015-11-15ASM
- Myeclipse 6.5 序號產生器2020-04-06Eclipse
- 做不來序號產生器,只好暴破Windows優化大師V4.3 (4千字)2001-11-02Windows優化
- Navicat Premiumx64 使用序號產生器啟用2018-11-12REM
- HappyIcon序號產生器TC原始碼 (1千字)2001-04-08APP原始碼
- NetTalk破解與序號產生器(高手勿進) (10千字)2001-09-20
- xplorer2之破解和序號產生器2004-12-05
- ZTZ-IE網路瀏覽器的破解與序號產生器,應付PETERCHEN用的 (8千字)2001-08-11瀏覽器
- MP3 explorer 破解和序號產生器的製作2015-11-15
- 分享一個navicat序號產生器2024-04-02
- SAP CRM One Order的事件序號產生器制2020-02-11事件
- win10如何執行序號產生器_win10怎麼執行序號產生器2020-08-28Win10
- Audio compositor註冊碼及序號產生器 (5千字)2002-04-06
- Turbo Note+ V4.4序號產生器制分析 (19千字)2001-11-07