国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
For Delphi,讓你的注冊(cè)機(jī)變小一些
For Delphi,讓你的注冊(cè)機(jī)變小一些



[這個(gè)貼子最后由商朝子在 2003/08/20 12:16pm 第 3 次編輯] 

    For Delphi,讓你的注冊(cè)機(jī)變小一些
請(qǐng)拋棄VCL,如果你嫌自己用Delphi編譯出來(lái)的注冊(cè)機(jī)個(gè)頭兒過(guò)大的話...
事實(shí)上這種事情確實(shí)在發(fā)生,就在今天,就在剛才,在偶還沒(méi)吃飯的時(shí)候就看到一個(gè)網(wǎng)友在這樣抱怨...
的確如此,KeyGen的個(gè)頭兒與它的界面一樣讓人失望,簡(jiǎn)單的form再來(lái)上兩個(gè)Edit,三個(gè)Button。普普通通的界面有著360K這樣的大體積,而上過(guò)殼后那150K的體積同樣不能讓人滿(mǎn)意...
會(huì)造成這樣的結(jié)果,與VCL是脫不了關(guān)系的,事實(shí)上你用Delphi編譯一個(gè)什么也不做的程序也會(huì)有351K,否則你以為為何用Delphi寫(xiě)程序是一件相當(dāng)輕松的事情?
不過(guò)這樣沉重的代價(jià)付到我們可愛(ài)的KeyGen上就有點(diǎn)兒太過(guò)殘忍了,很難想像某天要給一個(gè)大小200K左右的軟件寫(xiě)注冊(cè)機(jī)時(shí)會(huì)是怎樣一個(gè)情景...

來(lái)吧,讓我們想點(diǎn)兒辦法,目前有一些控件可以很好的完成這個(gè)工作,用了它們后你編譯出來(lái)的可執(zhí)行文件的個(gè)頭兒要比平常小很多,不過(guò)我并不打算介紹它們

這并不是什么太高深的東西,相信也不會(huì)很難

扔掉了VCL,我們能使用的東西就只有Pascal語(yǔ)言與API函數(shù)了,但實(shí)際上這就已經(jīng)足夠了:)
這之前先要找個(gè)軟件做例子,大大大大大大大前天看到一個(gè)雜志在海吹敏思硬盤(pán)衛(wèi)士,就Down了一個(gè)下來(lái),后來(lái)才發(fā)現(xiàn)它對(duì)我沒(méi)任何用處。呵呵,好老的一個(gè)軟件了,一年多沒(méi)更新了吧,估計(jì)注冊(cè)機(jī)漫天飛的都有

先用TRW2000來(lái)擺平它,啟動(dòng)軟件,我的機(jī)器碼是yjeyj239416,隨便輸入一個(gè)注冊(cè)碼,然后用hmemcpy做斷點(diǎn)......
在004a4165處的時(shí)候,我們會(huì)發(fā)現(xiàn)程序會(huì)把正確的注冊(cè)碼裝入edx中,比如這我邊兒的是3887361024,不過(guò)我們對(duì)它不感興趣,在它之上的的004a4160處,才是我們真正感興趣的地方,正確的注冊(cè)碼就是這個(gè)CALL來(lái)計(jì)算的。
按F8跟進(jìn)去,來(lái)到004a3a08處:
0167:004a3a08  push     ebp
0167:004a3a09  mov      ebp,esp
0167:004a3a0b  push     byte +00
0167:004a3a0d  push     byte +00
0167:004a3a0f  push     byte +00
0167:004a3a11  push     ebx
0167:004a3a12  push     esi
0167:004a3a13  mov      esi,ecx
0167:004a3a15  mov      ebx,edx
0167:004a3a17  mov      [ebp-04],eax
0167:004a3a1a  mov      eax,[ebp-04]
0167:004a3a1d  call     00404050
0167:004a3a22  xor      eax,eax
0167:004a3a24  push     ebp
0167:004a3a25  push     dword 004a3a6e
0167:004a3a2a  push     dword [fs:eax]          
0167:004a3a2d  mov      [fs:eax],esp           <--掛SEH,不關(guān)咱的事兒

0167:004a3a30  lea      edx,[ebp-0c]
0167:004a3a33  mov      eax,[ebp-04]
0167:004a3a36  call     004085a8               <--將機(jī)器碼轉(zhuǎn)換為大寫(xiě)字符
0167:004a3a3b  mov      eax,[ebp-0c]
0167:004a3a3e  lea      ecx,[ebp-08]
0167:004a3a41  movzx    edx,bx                 <--edx裝入Dh,即十進(jìn)制數(shù)13
0167:004a3a44  call     004a3958               <--完成計(jì)算正確注冊(cè)碼的第一步
0167:004a3a49  mov      edx,esi
0167:004a3a4b  mov      eax,[ebp-08]
0167:004a3a4e  call     004a3bdc               <-完成計(jì)算正確注冊(cè)碼的第二步
0167:004a3a53  xor      eax,eax
0167:004a3a55  pop      edx
0167:004a3a56  pop      ecx
0167:004a3a57  pop      ecx
0167:004a3a58  mov      [fs:eax],edx
0167:004a3a5b  push     dword 004a3a75
0167:004a3a60  lea      eax,[ebp-0c]
0167:004a3a63  mov      edx,03
0167:004a3a68  call     00403c40
0167:004a3a6d  ret    
0167:004a3a6e  jmp      00403630
0167:004a3a73  jmp      short 004a3a60
0167:004a3a75  pop      esi
0167:004a3a76  pop      ebx
0167:004a3a77  mov      esp,ebp
0167:004a3a79  pop      ebp
0167:004a3a7a  ret    
004a3a44處的所謂計(jì)算注冊(cè)碼的第一步就是指先對(duì)機(jī)器碼進(jìn)行一些處理,我們按F8跟進(jìn)去:
0167:004a3958  push     ebp
0167:004a3959  mov      ebp,esp
0167:004a395b  add      esp,byte -14
0167:004a395e  push     ebx
0167:004a395f  push     esi
0167:004a3960  push     edi
0167:004a3961  xor      ebx,ebx
0167:004a3963  mov      [ebp-14],ebx
0167:004a3966  mov      [ebp-0c],ecx
0167:004a3969  mov      [ebp-08],edx
0167:004a396c  mov      [ebp-04],eax
0167:004a396f  mov      eax,[ebp-04]
0167:004a3972  call     00404050
0167:004a3977  xor      eax,eax
0167:004a3979  push     ebp
0167:004a397a  push     dword 004a39f9
0167:004a397f  push     dword [fs:eax]
0167:004a3982  mov      [fs:eax],esp
0167:004a3985  mov      eax,[ebp-0c]
0167:004a3988  call     00403c1c
0167:004a398d  mov      eax,[ebp-08]
0167:004a3990  add      eax,[ebp-08]
0167:004a3993  mov      [ebp-10],eax
0167:004a3996  mov      eax,[ebp-04]
0167:004a3999  call     00403e9c            
0167:004a399e  mov      edi,eax                <--eax中此時(shí)裝的是機(jī)器碼的位數(shù)
0167:004a39a0  test     edi,edi                <--測(cè)試edi
0167:004a39a2  jng      004a39db               <--為0就跳到004a39db處
0167:004a39a4  mov      esi,01                 <--esi置1,用于后邊兒的循環(huán)
0167:004a39a9  mov      eax,[ebp-04]           <--機(jī)器碼的地址裝入eax中,此時(shí)的機(jī)器碼已轉(zhuǎn)換為大寫(xiě)字符
0167:004a39ac  xor      ebx,ebx                <--ebx清0
0167:004a39ae  mov      bl,[eax+esi-01]        <--得到機(jī)器碼
0167:004a39b2  test     esi,01                 <--test esi,01可以理解為測(cè)試esi中裝的值是否為雙數(shù)

0167:004a39b8  jnz      004a39bf               <--不為雙數(shù)就跳到004a39bf處
0167:004a39ba  add      ebx,[ebp-08]           <--ebp-08處裝的是Dh,也就是那個(gè)13,用其加上ebx中的機(jī)器碼的ASCII碼
0167:004a39bd  jmp      short 004a39c2         <--無(wú)條件跳轉(zhuǎn)到004a39bd處
0167:004a39bf  add      ebx,[ebp-10]           <--ebp-10處裝的是1Ah,即十進(jìn)制數(shù)26,用其加上ebx中裝的機(jī)器碼的ASCII碼
0167:004a39c2  lea      eax,[ebp-14]        
0167:004a39c5  mov      edx,ebx
0167:004a39c7  call     00403dc4
0167:004a39cc  mov      edx,[ebp-14]
0167:004a39cf  mov      eax,[ebp-0c]
0167:004a39d2  call     00408594               <--將得到的ASCII碼與26或13相加后的結(jié)果保存起來(lái)
0167:004a39d7  inc      esi                    <--esi加上1
0167:004a39d8  dec      edi                    <--edi減去1
0167:004a39d9  jnz      004a39a9               <--edi不為零,也就是機(jī)器碼還沒(méi)有全計(jì)算完,就跳回004a39a9處繼續(xù)
0167:004a39db  xor      eax,eax
0167:004a39dd  pop      edx
0167:004a39de  pop      ecx
0167:004a39df  pop      ecx
0167:004a39e0  mov      [fs:eax],edx
0167:004a39e3  push     dword 004a3a00
0167:004a39e8  lea      eax,[ebp-14]
0167:004a39eb  call     00403c1c
0167:004a39f0  lea      eax,[ebp-04]
0167:004a39f3  call     00403c1c
0167:004a39f8  ret    
0167:004a39f9  jmp      00403630
0167:004a39fe  jmp      short 004a39e8
0167:004a3a00  pop      edi
0167:004a3a01  pop      esi
0167:004a3a02  pop      ebx
0167:004a3a03  mov      esp,ebp
0167:004a3a05  pop      ebp
0167:004a3a06  ret    

這個(gè)CALL的作用呢,就是這樣的:將機(jī)器碼中的每個(gè)字符的ASCII碼,加上26或13(單位,如第1、3、5位加上26,雙位,如第2、4、6位加上13),并將之保存起來(lái),以便后面的應(yīng)用。與我的機(jī)器對(duì)應(yīng)的是:sW_fd?MFN>P
好的,我們繼續(xù),等到返回后,接著走兩步,我們就會(huì)到達(dá)004a3a4e處,在這個(gè)CALL里,會(huì)完成計(jì)算注冊(cè)碼的最后一步,一起去看看吧:
0167:004a3bdc  push     ebp
0167:004a3bdd  mov      ebp,esp
0167:004a3bdf  add      esp,byte -10
0167:004a3be2  push     ebx
0167:004a3be3  mov      [ebp-08],edx
0167:004a3be6  mov      [ebp-04],eax
0167:004a3be9  mov      eax,[ebp-04]
0167:004a3bec  call     00404050
0167:004a3bf1  xor      eax,eax
0167:004a3bf3  push     ebp
0167:004a3bf4  push     dword 004a3c62
0167:004a3bf9  push     dword [fs:eax]
0167:004a3bfc  mov      [fs:eax],esp
0167:004a3bff  mov      eax,[ebp-08]
0167:004a3c02  call     00403c1c
0167:004a3c07  mov      ebx,1e61               <--ebx裝入1e61h,即十進(jìn)值數(shù)7777
0167:004a3c0c  mov      eax,[ebp-04]
0167:004a3c0f  call     00403e9c
0167:004a3c14  mov      edx,eax
0167:004a3c16  test     edx,edx
0167:004a3c18  jna      004a3c32
0167:004a3c1a  mov      eax,01                 <--eax中裝入1,用于下邊兒的循環(huán)
0167:004a3c1f  mov      ecx,[ebp-04]           <--ebp-04中裝的正是字符串sW_fd?MFN>P的地址
0167:004a3c22  movzx    ecx,byte [ecx+eax-01]  <--ecx中裝入本輪用于計(jì)算的字符
0167:004a3c27  add      ecx,eax                <--ecx加上eax的值
0167:004a3c29  imul     ecx,ebx                <--乘以ebx,第一次的時(shí)候ebx中的值為前邊裝入的7777
0167:004a3c2c  mov      ebx,ecx                <--結(jié)果裝入ebx中
0167:004a3c2e  inc      eax                    <--eax加上1,用于得到下一個(gè)字符
0167:004a3c2f  dec      edx                    <--edx減去1
0167:004a3c30  jnz      004a3c1f               <--不為零就跳回去繼續(xù)
0167:004a3c32  mov      eax,[ebp-08]
0167:004a3c35  push     eax
0167:004a3c36  mov      [ebp-10],ebx
0167:004a3c39  mov      byte [ebp-0c],00
0167:004a3c3d  lea      edx,[ebp-10]
0167:004a3c40  xor      ecx,ecx
0167:004a3c42  mov      eax,004a3c78
0167:004a3c47  call     004098ec
0167:004a3c4c  xor      eax,eax
0167:004a3c4e  pop      edx
0167:004a3c4f  pop      ecx
0167:004a3c50  pop      ecx
0167:004a3c51  mov      [fs:eax],edx
0167:004a3c54  push     dword 004a3c69
0167:004a3c59  lea      eax,[ebp-04]
0167:004a3c5c  call     00403c1c
0167:004a3c61  ret    
0167:004a3c62  jmp      00403630
0167:004a3c67  jmp      short 004a3c59
0167:004a3c69  pop      ebx
0167:004a3c6a  mov      esp,ebp
0167:004a3c6c  pop      ebp
0167:004a3c6d  ret    

嘿嘿,“平民算法”嘛

現(xiàn)在我們手里所掌握的,已足夠?qū)懗鲎?cè)機(jī)了,通常情況下,我們可以聲明這樣一個(gè)函數(shù)用于計(jì)算正確的注冊(cè)碼:
function  GetKey(Name: String): String;
var
 User,Serial:String;
 i:integer;
 ASC,jia,Zhi:Cardinal;
begin
 zhi:=7777;
 User:=UpperCase(Name);
 if Length(User)=0 then Result:=‘請(qǐng)輸入您的機(jī)器碼...‘
 else
   begin
     for i:=1 to Length(User) do
       begin
         ASC:=Ord(User[i]);
         if i mod 2 =0 then ASC:=ASC+13
         else
           ASC:=ASC+26;
         ASC:=ASC+i;
         jia:=ASC*zhi;
         zhi:=jia;
       end;
     Serial:=inttostr(zhi);  
     Result:=Serial;
   end;
end;

然后我們就可以在Delphi中通過(guò)VCL來(lái)增大我們KeyGen的體積了,但今天我們不準(zhǔn)備這么做

OK,啟動(dòng)你的Delphi,然后新建一個(gè)應(yīng)用程序,然后就在代碼窗口中右鍵Unit1單元->Close Page,接著選No來(lái)把Unit1.Pas給刪除掉。
接著選菜單View->Units,雙擊Project1打開(kāi)它,我們就靠它吃飯了
隨便找個(gè)文件夾把它保存一下,比如說(shuō)保存為KeyGen.dpr。
然后我們可以把它的內(nèi)容給全部刪掉,只留下三行:
program KeyGen;
begin
end.
呵呵,按F9吧,你會(huì)什么也感覺(jué)不到,但事實(shí)上這已經(jīng)是一個(gè)程序了。
如果你看一下所生成的KeyGen.exe的大小,你會(huì)發(fā)現(xiàn),盡管我們什么也沒(méi)有寫(xiě),可它已經(jīng)有了8K大。這是因?yàn)樵谌魏蜠ELPHI的目標(biāo)程序中,都會(huì)自動(dòng)包含System單元中的代碼,如果你用Delphi5的話,它會(huì)是16K。在這小小的8K中,包含了支撐整座DELPHI大廈的基石,VeryVery牢靠。
以后隨著我們代碼的增加,程序的大小也會(huì)從8K開(kāi)始慢慢跟著增加

讓我們開(kāi)始吧,我把注冊(cè)機(jī)與資源文件的代碼貼出來(lái)(修正了dREAMtHEATER指出的兩處錯(cuò)誤,同時(shí)代碼更緊湊了一些^_^):

{-<KeyGen.dpr>------------------------------------Code made >> Suunb[CCG]-----.}
program KenGen;

{$R ‘KenGen.res‘ ‘KenGen.rc‘}         (*感謝dREAMtHEATER老哥的指正:)*)

uses
 Windows,  Messages;

{---------------------------------------------------------<引入相關(guān)單元>------;}
{----Windows.pas里面包含了常量與API的定義,Messages.pas中則包含了消息的定義----;}

const
 IDI_CCG                    =        1 ;
 IDC_EDIT_CODE              =        3001 ;
 IDC_EDIT_SERIAL            =        3002 ;
 IDC_BUTTON_GENERATE        =        3003 ;
 IDC_BUTTON_ABOUT           =        3004 ;
 IDC_BUTTON_EXIT            =        3005 ;
 IDC_ABOUT_BUTTON_GREETING  =        3006 ;
 szDlgName                  =        ‘KeyGenMain‘;
 szAboutDlg                 =        ‘About‘;

{---------------------------------------------------------<以上為常量定義>----;}

function  GetKey(S: String): String;
var
 Code,Serial:String;
 i:integer;
 ASC,Q,P:Cardinal;
 NN:array [0..512] of Char;
begin
 P:=7777;
 Code:=S;
 if Length(Code)=0 then Result:=‘請(qǐng)輸入您的機(jī)器碼...‘
 else
   begin
     CharUpperBuff(PChar(Code),Length(S));
     for i:=1 to Length(Code) do
       begin
         ASC:=Ord(Code[i]);
         if i mod 2 =0 then ASC:=ASC+13
         else
           ASC:=ASC+26;
         ASC:=ASC+i;
         Q:=ASC*P;
         P:=Q;
       end;
     if P>2147483647 then
       begin
         if (P>2147483647) and (P<3000000000)  then
           begin
             P:=P-2000000000;
             if P<100000000 then
               wvsprintf(NN,‘0%d‘,@P)
             else
               wvsprintf(NN,‘%d‘,@P);
             Serial:=‘2‘+String(NN);
           end
         else if (P>3000000000) and (P<4000000000) then
           begin
             P:=P-3000000000;
             if P<100000000 then
               wvsprintf(NN,‘0%d‘,@P)
             else
               wvsprintf(NN,‘%d‘,@P);
             Serial:=‘3‘+String(NN);
           end
         else if (P>4000000000) and (P<5000000000) then
           begin
             P:=P-4000000000;
             if P<100000000 then
               wvsprintf(NN,‘0%d‘,@P)
             else
               wvsprintf(NN,‘%d‘,@P);
             Serial:=‘4‘+String(NN);
           end
       end
     else
       begin
         wvsprintf(NN,‘%d‘,@P);
         Serial:=String(NN);
       end;
     Result:=Serial;
   end;
end;

{-------------------------------<上面的這個(gè)函數(shù)就是用來(lái)計(jì)算正確的注冊(cè)碼的>----;}

function AboutProc (Wnd: hWnd; Msg, wParam: Word; lParam: LongInt)
:LongInt; stdcall;
begin
 Case Msg of
   WM_CLOSE:EndDialog(Wnd,0);
   WM_COMMAND:
     begin
       if (LOWORD(wParam))=IDC_ABOUT_BUTTON_GREETING then EndDialog(Wnd,0)
       else Result:=1;
     end;
 end;
 Result:=0;
end;

{-<上面的函數(shù)用于處理“關(guān)于”對(duì)話框接收到的消息,stdcall表示其為一個(gè)回調(diào)函數(shù)>-;}

function DlgProc (Wnd: hWnd; Msg, wParam: Word; lParam: LongInt)
:LongInt; stdcall;
var
 Code:array[0..512] of Char;
 Serial:String;
begin
 Case Msg of
   WM_CLOSE:
     EndDialog(Wnd,0);
   WM_INITDIALOG:
     begin
       SendMessage(Wnd,WM_SETICON, ICON_SMALL, LoadIcon(hInstance, PChar(IDI_CCG)));
     end;
   WM_COMMAND:
     begin
       case (LOWORD(wParam)) of
         IDC_BUTTON_about:DialogBoxParam(hInstance,szAboutDlg,Wnd, @AboutProc, 0);
         IDC_BUTTON_GENERATE:
           begin
             GetDlgItemText(Wnd,IDC_EDIT_CODE,Code,512);
             Serial:=GetKey(Code);
             SetDlgItemText(Wnd,IDC_EDIT_SERIAL,PChar(Serial));
           end;
         IDC_BUTTON_EXIT:SendMessage(Wnd,WM_CLOSE, 0, 0);
       end;
     end;
   else
     Result:=1;
 end;
 Result:=0;
end;

{---------------------------------<主窗口的消息循環(huán),同樣為一個(gè)回調(diào)函數(shù)>------;}


begin
 DialogBoxParam(hInstance,szDlgName,0,@DlgProc,0);
 (*程序開(kāi)始,調(diào)用DialogBoxParam來(lái)創(chuàng)建程序的主對(duì)話框,hInstance是Delphi提供
  給我們的全局變量,不必再去調(diào)用GetModuleHandle函數(shù)*)
 {經(jīng)dREAMtHEATER指正,Delphi會(huì)自動(dòng)調(diào)用ExitProcess函數(shù),所以將其免去...}
end.

//------------------------------------------------------------------------------
//------------------the Shang Dynasty (16th―11th century B.C.)-----------------
//--------------------------------------------------------------------Code end--

下面再把資源文件也貼出來(lái):
//-KeyGen.rc-------------------------------------------------by Suunb[CCG]--

#define CCG_ICO                         1
#define Su_ICO                          2
#define IDC_EDIT_CODE                   3001
#define IDC_EDIT_SERIAL                 3002
#define IDC_BUTTON_GENERATE             3003
#define IDC_BUTTON_ABOUT                3004
#define IDC_BUTTON_EXIT                 3005
#define IDC_ABOUT_BUTTON_GREETING       3006

//-------------------------------------------<以上是一些常量的定義>---------

KeyGenMain DIALOGEX 10, 10, 163, 94
style DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "CCG KeyGen for 敏思硬盤(pán)衛(wèi)士 v2.2"
FONT 9, "Arial"
BEGIN
  GROUPBOX        "register",-1,5,3,151,44,BS_FLAT
  LTEXT           "Code:",-1,10,14,23,10
  EDITTEXT        IDC_EDIT_CODE,35,13,115,12,ES_AUTOHSCROLL,WS_EX_DLGMODALFRAME
  LTEXT           "Serial:",-1,10,29,23,10
  EDITTEXT        IDC_EDIT_SERIAL,35,29,115,12,ES_AUTOHSCROLL,WS_EX_DLGMODALFRAME
  PUSHBUTTON      "gENERATE",IDC_BUTTON_GENERATE,13,54,39,11,BS_CENTER | BS_FLAT
  PUSHBUTTON      "aBOUT",IDC_BUTTON_ABOUT,61,54,39,11,BS_CENTER | BS_FLAT
  PUSHBUTTON      "eXIT",IDC_BUTTON_EXIT,108,54,39,11,BS_CENTER | BS_FLAT
  LTEXT           "wish it becorning more prosperous every day!",-1,10,77,
                  143,9
  GROUPBOX        "Lovely CCG",-1,6,69,151,21,BS_CENTER | BS_FLAT
END

//--------------------------------------------<以上是程序的的主窗口對(duì)話框>---------

About DIALOGEX 10, 10, 143, 141
style DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION |
  WS_SYSMENU
CAPTION "The Shang Dynasty (16th - 11th century B.C.)"
FONT 9, "Arial"
BEGIN
  ICON            1,-1,13,14,20,20
  LTEXT           "Code made:",-1,25,3,41,8
  LTEXT           "by",-1,40,13,8,8
  LTEXT           "Date:April 26t,2003",-1,48,25,61,9
  CONTROL         "",-1,"Static",SS_ETCHEDHORZ,4,36,132,1
  LTEXT           "Personal Individual Greetings go to:",-1,19,41,114,8
  LTEXT           "Sun Bird - JOJO - KANXUE",-1,11,51,85,9
  LTEXT           "pll621 - zmworm - yyxzz",-1,46,62,73,9,SS_CENTERIMAGE
  LTEXT           "Personal Group Greetings go to:",-1,22,87,105,8
  LTEXT           "BCG FCG iPB DFCG DCM",-1,28,101,85,9,WS_BORDER
  LTEXT           "Suunb[CCG]",-1,50,12,45,11,0,WS_EX_DLGMODALFRAME
  LTEXT           "and other CCG guys...",-1,29,74,92,9,SS_CENTERIMAGE
  ICON            2,-1,112,14,20,20
  PUSHBUTTON      "gREETING",IDC_ABOUT_BUTTON_GREETING,50,120,41,12,BS_FLAT
END

//--------------------------------------------<這個(gè)是“關(guān)于”對(duì)話框>--------

你可以用記事本將這兩個(gè)文件分別保存為KeyGen.dpr、KeyGen.rc,之后將KeyGen.rc與KeyGen.dpr放置同一目錄下用Delphi編譯KeyGen.dpr即可...
看一下編譯后的KeyGen的大小吧,20.5K,再來(lái)個(gè)殼就只有10幾K了,雖然界面并不怎么漂亮

OK,就到這兒。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
匯編語(yǔ)言的準(zhǔn)備知識(shí)
IDA簡(jiǎn)易教程
軟件脫殼、破重啟驗(yàn)證、追碼、制作內(nèi)存注冊(cè)機(jī)
qq反匯編日志
80386ASM程序設(shè)計(jì)基礎(chǔ)(八)
Kernel panic 信息分析方法(轉(zhuǎn)自高人)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服