免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 软件破解 > 对某crackme的写法的分析及注册机编写

对某crackme的写法的分析及注册机编写

时间:2012-02-23 13:17来源:未知 整理:寂涯网络 点击:

也不知道是什么时候留下的一个crackme闲来无事拿来练手,突然发觉还是个蛮有趣的
Crackme,于是就记录下来过程给新手作为参考。因为本文面向新手,所以过程尽量详细、
结构尽量清晰。先说下本文用到的工具,Peid、Od、vc6.0。
逆向分析一个软件基本流程如下:运行今查壳今调试今分析算法今写出注册码今写出注
册机。本文为求思路清晰,按照上面流程依次进行分析。
运行,在确保不是病毒的情况下,试着运行下软件,从外围查看下软件的特征,有很多
很有用的信息会在调试分析的时候有很重要的作用的。如这个crackme的运行情况,我们先
输入Name、Serial 结果如图 1

输入name,serial

输入name:noback,serial:hack点击test发现没有状况。
由此我们可以得出可以通过搜索字符串Name can not be empty的方法来进入我们分析 的领空或者断点函数MessageBox (MessageBoxA)。目前得到的信息是:查找字符串或者 MessageBox函数下断或许可行。
壳,拿到一个软件首先查下有没有加壳,有壳的脱壳有anti的去anti,因为这个crackme没有加壳,并且脱壳是一门比逆向更为高深的技术,、三言两语也是解说不清的,在这里就 不做赘述了,但是这个流程在逆向分析中是必不可少的。如果拿了软件就来调试,并且很不幸的软件加过壳,那么你的工作怕是白白浪费在了壳的空间里了。目前得到信息:软件无壳 可以直接调试。
调试,调试应该是逆向分析过程中最为苦力活的阶段,这个需要丰富的经验、扎实的汇 编基础以及绝不放弃的毅力。进入调试,也算是进入正题了,我们先用习惯性的手法,首先 查找下字符串看有没有什么收获,如图3

图3

碰到了我们在运行里面记录下的字符串,
004010FE |. |6A 40 push 40 ;
/Style = MB_OK|MB_ _IC0NASTERISK MB_APPLM0DAL
00401100 |. |68 64604000 push 00406064 ;
|erorr   
00401105 |. 68 30604000 push 00406030 ; |s
0040110A |. |56 push esi ;
|h 0040110B | |FF15A0504000 call d word ptr [<&USER32.MessageBoxA>>;
\MessageBoxA   
原来是来到MessageBoxA处,正好是我们需要找的相关区域。在010040110a出下断,
f9运行,SNameSSerial,点击test果然断在此处,证明此处跟我们预想的是一致的。
顺便提一下,在查找关键函数区域的时候还以使用bpxr指令,查看程序调用了哪些函数,
比如MessageBoxA、GetDlgItemTextA等函数。我们在断在了 MessageBoxA处后向上看下相
关区域,居然看到了GetDlgItemTextA函数,如图4

图4


至此我们找到了最关键的区域了接下来我们就来分析下程序,在每个关键代码后都加了注释,通过注释来理解汇编的意思,如下:
//关键call的开始   
004010B0 /$ 83EC lC sub esp, 1C //分配局部变量空间
004010B3 I. 8D4424 00 lea eax, dword ptr [esp]
004010B7 I. 56 push esi 
004010B8 I. 8B7424 24 mov esi, dword ptr [esp+24]
004010BC I. 57 push edi 
004010BD I. 8B3D 9C504000 mov edi, dword ptr [<&USER32. GetDlgI>;
USER32. GetDlgItemTextA   
004010C3 I. 6A 07 push 7 !
/Count = 7     
004010C5 I. 50 push eax !
|Buffer = 0012FA60   
004010C6 I. 68 F2030000 push 3F2 )
|ControlID = 3F2 (1010.)   
004010CB I. 56 push esi !
|hWnd     
004010CC I. FFD7 call edi )
\GetD1gItemTextA "获取输入的Name前六个字符,存放到[eax]中
004010CE  |. 85C0   test eax, eax
//判断是否为空Name,为空则弹出MessageBoxA 
004010D0 I. 75 19 jnz short 004010EB ;
//     
004010D2 I. 6A 40 push 40 !
/Style = MB_OK|MB _ICONASTERISK|MB_APPLMODAL 
004010D4 I. 68 64604000 push 00406064 ;

本页地址 http://www.jybase.net/ruanjianpojie/20120223782.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com