欧美另类日韩中文色综合,天堂va亚洲va欧美va国产,www.av在线播放,大香视频伊人精品75,奇米777888,欧美日本道免费二区三区,中文字幕亚洲综久久2021

終于找到一個(gè)最適合新手的Crackme -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【www.lotusphilosophies.com - 電腦資料】

    【文章標(biāo)題】: 終于找到一個(gè)最適合新手的Crackme(算法分析+注冊(cè)機(jī))

    【文章作者】: qwgboy2000

    【作者郵箱】: qwgboy2000@126.com

    【作者主頁(yè)】: http://mland.icpcn.com/

    【作者QQ號(hào)】: 27141459

    【軟件名稱】: AD_CM#2.exe

    【軟件大小】: 4K

    【下載地址】: 自己搜索下載

    【加殼方式】: 無(wú)

    【保護(hù)方式】: name、Serial

    【編寫語(yǔ)言】: MASM32/TASM32

    【使用工具】: PEiD、OD

    【操作平臺(tái)】: WINXP

    【軟件介紹】: 從www.crackme.de上找來(lái)的一個(gè)簡(jiǎn)單crackme

    【作者聲明】: 只是感興趣,沒(méi)有其他目的,

終于找到一個(gè)最適合新手的Crackme

。失誤之處敬請(qǐng)諸位大俠賜教!

    --------------------------------------------------------------------------------

    【詳細(xì)過(guò)程】

    首先用PEiD查看無(wú)殼  ;)

    OD載入,熟悉大致流程以后,按下CTRL+N,出現(xiàn)以下部分:

    名稱位于 AD_CM#2

    地址       區(qū)段       類型    (已知)       名稱                                    注釋

    00402020   .rdata     輸入    (已知)           USER32.DialogBoxParamA

    00402018   .rdata     輸入    (已知)           USER32.EndDialog

    00402004   .rdata     輸入    (已知)           KERNEL32.ExitProcess

    00402010   .rdata     輸入    (已知)           USER32.GetDlgItem

    0040200C   .rdata     輸入    (已知)           USER32.GetDlgItemTextA         ;應(yīng)該就是它了

    00402000   .rdata     輸入    (已知)           KERNEL32.GetModuleHandleA

    0040201C   .rdata     輸入    (已知)           USER32.MessageBoxA

    00402024   .rdata     輸入    (已知)           USER32.SendMessageA

    00402014   .rdata     輸入    (已知)           USER32.SetFocus

    00401000   .text      輸出                   <模塊入口點(diǎn)>

    看到以上的內(nèi)容,不難知道下什么斷點(diǎn)了

    Command: bpx getdlgitemtexta

    按下F9運(yùn)行程序,輸入name和Serial

    我name=qwgboy2000、Serial=7878781234確定以后

    中斷到了以下關(guān)鍵部分

    004010FC  /$Content$nbsp; 55            push    ebp

    004010FD  |.  8BEC          mov     ebp, esp

    004010FF  |.  6A 14         push    14                             ; /Count = 14 (20.)

    00401101  |.  68 80304000   push    00403080                       ; |Buffer = AD_CM#2.00403080

    00401106  |.  68 B80B0000   push    0BB8                           ; |ControlID = BB8 (3000.)

    0040110B  |.  FF75 08       push    dword ptr [ebp+8]              ; |hWnd

    0040110E  |.  E8 77000000   call      ; \GetDlgItemTextA

    00401113  |.  8BF0          mov     esi, eax

    00401115  |.  8D01          lea     eax, [ecx]

    00401117  |.  83FE 05       cmp     esi, 5                         ;  比較name是否大于等于5個(gè)字符,小于則game over

    0040111A  |.  7D 18         jge     short 00401134

    0040111C  |.  6A 40         push    40                             ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL

    0040111E  |.  68 12304000   push    00403012                       ; |Title = "ArturDents CrackMe#2"

    00401123  |.  68 44304000   push    00403044                       ; |Text = "Your name must be at least five characters

    long!"

    00401128  |.  FF75 08       push    dword ptr [ebp+8]              ; |hOwner

    0040112B  |.  E8 60000000   call          ; \MessageBoxA

    00401130  |.  33C0          xor     eax, eax

    00401132  |.  EB 40         jmp     short 00401174

    00401134  |>  6A 14         push    14                             ; /Count = 14 (20.)

    00401136  |.  68 80324000   push    00403280                       ; |Buffer = AD_CM#2.00403280

    0040113B  |.  68 B90B0000   push    0BB9                           ; |ControlID = BB9 (3001.)

    00401140  |.  FF75 08       push    dword ptr [ebp+8]              ; |hWnd

    00401143  |.  E8 42000000   call      ; \GetDlgItemTextA

    00401148  |.  B8 80304000   mov     eax, 00403080                  ;  ASCII "qwgboy2000"

    0040114D  |.  BB 80324000   mov     ebx, 00403280                  ;  ASCII "7878781234"

    00401152  |.  8BCE          mov     ecx, esi                       ;  準(zhǔn)備循環(huán)了,循環(huán)次數(shù)為name長(zhǎng)度

    00401154  |>  8A10          /mov     dl, [eax]                     ;  依次開始從name的第一個(gè)字符取起

    00401156  |.  2AD1          |sub     dl, cl                        ;  新字符=原來(lái)字符-循環(huán)剩下的次數(shù),第一次為name長(zhǎng)度

    00401158  |.  3813          |cmp     [ebx], dl                     ;  新字符和Serial的對(duì)應(yīng)字符進(jìn)行比較

    0040115A  |.  75 18         |jnz     short 00401174                ;  如果不相同,則game over(從這里我們可以知道name和

    Serial

    字符長(zhǎng)度相同)

    0040115C  |.  40            |inc     eax                           ;  eax=eax+1,為取下一個(gè)字符進(jìn)行下一次的循環(huán)運(yùn)算做好準(zhǔn)備

    0040115D  |.  43            |inc     ebx                           ;  ebx=ebx+1,為取下一個(gè)Serial進(jìn)行下一次的比較做好準(zhǔn)備

    0040115E  |.^ E2 F4         \loopd   short 00401154                ;  循環(huán)

    00401160  |.  6A 40         push    40                             ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL

    00401162  |.  68 12304000   push    00403012                       ; |Title = "ArturDents CrackMe#2"

    00401167  |.  68 27304000   push    00403027                       ; |Text = "Yeah, you did it!"

    0040116C  |.  FF75 08       push    dword ptr [ebp+8]              ; |hOwner

    0040116F  |.  E8 1C000000   call          ; \MessageBoxA

    00401174  |>  C9            leave

    00401175  \.  C2 0400       retn    4

    --------------------------------------------------------------------------------

    【經(jīng)驗(yàn)總結(jié)

    這個(gè)crackme絕對(duì)是新手拿來(lái)練習(xí)的好東東

    程序首先判斷輸入的name長(zhǎng)度,只有大于等于5才可以

    且Serial長(zhǎng)度和name長(zhǎng)度是相等的

    算法很簡(jiǎn)單:Serial的每個(gè)字符=name對(duì)應(yīng)的字符-對(duì)應(yīng)長(zhǎng)度

    本人name:qwgboy2000

    那么Serial依次應(yīng)該為:q-10、w-9、g-8、b-7、o-6、y-5、2-4、0-3、0-2、0-1

    即Serial:gn_[it.-./

    注冊(cè)機(jī)部分如下:

    #include"string.h"

    main()

    {

    char name[32];

    int i,j;

    printf("please input your name:");

    scanf("%s",name);

    i=strlen(name);

    if(i<5)

    {

    printf("Your name must be at least five characters\n");

    printf("please input your name again:");

    scanf("%s",name);

    i=strlen(name);

    }

    printf("your Serial is:");

    for(i;i>=1;i--)

    {

    j=strlen(name)-i;

    printf("%c",name[j]-i);

    }

    }

    以上程序TC2.0調(diào)試通過(guò)

最新文章