终于找到一个最适合新手的Crackme

时间:2023-02-04 04:00:55 作者:耳咚 综合材料 收藏本文 下载本文

【导语】“耳咚”通过精心收集,向本站投稿了2篇终于找到一个最适合新手的Crackme,下面是小编给大家带来的终于找到一个最适合新手的Crackme,以供大家参考,我们一起来看看吧!

篇1:终于找到一个最适合新手的Crackme

【文章标题】: 终于找到一个最适合新手的Crackme(算法分析+注册机)

【文章作者】: qwgboy2000

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

【作者主页】: mland.icpcn.com/

【作者QQ号】: 27141459

【软件名称】: AD_CM#2.exe

【软件大小】: 4K

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

【加壳方式】: 无

【保护方式】: name、Serial

【编写语言】: MASM32/TASM32

【使用工具】: PEiD、OD

【操作平台】: WINXP

【软件介绍】: 从www.crackme.de上找来的一个简单crackme

【作者声明】: 只是感兴趣,没有其他目的,失误之处敬请诸位大侠赐教!

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

【详细过程】

首先用PEiD查看无壳  ;)

OD载入,熟悉大致流程以后,按下CTRL+N,出现以下部分:

名称位于 AD_CM#2

地址       区段       类型    (已知)       名称                                    注释

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

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

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

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

0040200C   .rdata     输入    (已知)           USER32.GetDlgItemTextA         ;应该就是它了

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

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

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

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

00401000   .text      输出                   <模块入口点>

看到以上的内容,不难知道下什么断点了

Command: bpx getdlgitemtexta

按下F9运行程序,输入name和Serial

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

中断到了以下关键部分

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个字符,小于则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                       ;  准备循环了,循环次数为name长度

00401154  |>  8A10          /mov     dl, [eax]                     ;  依次开始从name的第一个字符取起

00401156  |.  2AD1          |sub     dl, cl                        ;  新字符=原来字符-循环剩下的次数,第一次为name长度

00401158  |.  3813          |cmp     [ebx], dl                     ;  新字符和Serial的对应字符进行比较

0040115A  |.  75 18         |jnz     short 00401174                ;  如果不相同,则game over(从这里我们可以知道name和

Serial

字符长度相同)

0040115C  |.  40            |inc     eax                           ;  eax=eax+1,为取下一个字符进行下一次的循环运算做好准备

0040115D  |.  43            |inc     ebx                           ;  ebx=ebx+1,为取下一个Serial进行下一次的比较做好准备

0040115E  |.^ E2 F4         \\loopd   short 00401154                ;  循环

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

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

【经验总结】

这个crackme绝对是新手拿来练习的好东东

程序首先判断输入的name长度,只有大于等于5才可以

且Serial长度和name长度是相等的

算法很简单:Serial的每个字符=name对应的字符-对应长度

本人name:qwgboy2000

那么Serial依次应该为:q-10、w-9、g-8、b-7、o-6、y-5、2-4、0-3、0-2、0-1

即Serial:gn_[it.-./

注册机部分如下:

#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调试通过

篇2:,终于找到一个现成的年终总结

2011,终于找到一个现成的年终总结

this.p={ m:2, b:2, id:'fks_087067082082087065083095080065072083083068 082082080068084', blogTitle:'2011,终于找到一个现成的年终总结', blogAbstract:' ', blogTag:'', blogUrl:'blog/static/5276467020120344436393', isPublished:1, istop:false, type:0, modifyTime:0, publishTime:1325580276393, permalink:'blog/static/5276467020120344436393', commentCount:0, mainCommentCount:0, recommendCount:0, bsrk:-100, publisherId:0, recomBlogHome:false, attachmentsFileIds:[], vote:{}, groupInfo:{}, friendstatus:'none', followstatus:'unFollow', pubSucc:'', visitorProvince:'陕西', visitorCity:'西安', postAddInfo:{}, mset:'000', mcon:'', srk:-100, remindgoodnightblog:false, isBlackVisitor:false, isShowYodaoAd:false, hostIntro:'工作上希望自己是好医生,\\r\\n\\r\\n科研上希望自己是负责的`学者,\\r\\n\\r\\n生活中希望自己是个好妈妈,\\r\\n\\r\\n对待老人上希望自己是个好女儿。', hmcon:'1' } {list a as x} {if !!x}

{if x.visitorName==visitor.userName} {else} {/if}

{if x.moveFrom=='wap'} {elseif x.moveFrom=='iphone'} {elseif x.moveFrom=='android'} {elseif x.moveFrom=='mobile'} {/if} ${fn(x.visitorNickname,8)|escape}

{/if} {/list} {if !!a} ${fn(a.nickname,8)|escape}

${a.selfIntro|escape}{if great260}${suplement}{/if}

{/if} {list a as x} {if !!x}

${fn(x.title,26)|escape}

{/if} {/list}

推荐过这篇日志的人: {list a as x} {if !!x}

${fn(x.recommenderNickname,6)|escape}

{/if} {/list}

{if !!b&&b.length>0}

他们还推荐了: {list b as y} {if !!y}

${y.recommendBlogTitle}

{/if} {/list}

{/if} 引用记录:

{list d as x}

${x.referBlogTitle}

${x.referUserName}

{/list}

{list a as x} {if !!x}

{/if} {/list}

{list a as x} {if !!x}

{/if} {/list}

{list a as x} {if !!x}

{/if} {/list}

{list a as x} {if x_index>9}{break}{/if} {if !!x}

${fn2(parseInt(x.date),'yyyy-MM-dd HH:mm:ss')} {/if} {/list}

{list a as x} {if x_index>4}{break}{/if} {if !!x}

最新日志

该作者的其他文章

博主推荐相关日志随机阅读首页推荐更多>>

{list a as x} {if !!x}

${x.nickName|escape} 投票给 {var first_option = true;} {list x.voteDetailList as voteToOption} {if voteToOption==1} {if first_option==false},{/if} “${b[voteToOption_index]}” {/if} {/list} {if (x.role!=“-1”) },“我是${c[x.role]}” {/if} ${fn1(x.voteTime)} {if x.userName==''}{/if} {/if} {/list}

我终于找到-写事作文800字

我终于圆了一个梦

找到妈妈

最适合小学生的对联

哪些英国地区最适合留学?

找到失主作文

怎样才能找到一份工作呢?

找到秋天作文

菜鸟如何找到好工作

作文找到自信

终于找到一个最适合新手的Crackme(共2篇)

欢迎下载DOC格式的终于找到一个最适合新手的Crackme,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档