做者:逆向驿站
微信公众号:逆向驿站
知乎:逆向驿站算法
crackme007,是006的升级版,程序开发者给出的难度是3星,多是迷惑有点多?我的以为条线仍是比较清晰,难度也不大,依然适合新手
【环境和工具】安全
【学习层次】微信
最终效果展现
程序验证流程逻辑图
动态分析
1.程序观察
crackme006的升级版,最终目标是一致的,均是要求给下方的蓝色logo无遮盖的显示出来,也就是说要给这个区域的控件所有隐藏,程序界面以下图网络
同时可见开发crackme的和学习crackme的目标和标准是一致的,path的方式是不被承认的,即不可爆破,crackme如果个美貌女子,则应征服其心,切不可霸王硬上弓。函数
2.控件ID,事件函数信息
依然老规矩,既然是delphi的程序,咱们就先用dededark给控件信息和事件函数信息搜集出来工具
3.控件ID常量搜索法,打开入手点
程序开始只有一个Register按钮,对应上图,其控件ID是2CC,那么咱们依然就从2CC常量出发
查找→全部常量→2CC(Register按钮控件ID),结果以下
跟入第一个,根据以前的对dephi程序逆向的经验,应该能够一眼看出,这里的反汇编代码,功能是:dl的值0是隐藏,1是显示,以下图
能够看出,如果程序如期执行到这里,则隐藏Register按钮,并显示Again按钮,那么咱们在这个代码的函数块入口处下断点,来动态分析这个函数块的逻辑流程,以下图
能够看到,这个函数实际就是点击Register按钮的事件函数,首先会对code进行验证,如果纯数字则跳到下方,不然弹框报错,并给[0x445830]赋值,看似画蛇添足,实则是必须过程,缘由后面会提到,若是输入的是纯数字,则执行如下流程,如图
在这里咱们看到了算法函数,算法函数须要三个参数(用户名、code、[0x445830]的值),算法函数如果合规,则隐藏Register按钮,显示Again按钮。那么咱们就F7跟入算法函数去研究算法学习
4.分析算法
在分析算法前,须要对[0x445830]这个全局变量值作一个说明区块链
咱们来分析算法,如图
可见核心算法是测试
//code输入AAAAAA给[0x445830]赋的值 int nKey = 0x1686; char szRes[1024] = {0}; char szName[32] = {0}; int nCode = 0; int nTemp = 0; GetDlgItemText(IDC_EDIT1,szName,31); if (strlen(szName)!=5) { MessageBox("请输入5字符长度的字符串","逆向驿站提示您"); } else { //根据name字符串计算 for (int i =1;i<=5;i++) { for (int j =5;j>=1;j--) { nTemp = nTemp + (int)szName[i-1] * (int)szName[j-1] * nKey; } } } //取模 nTemp = nTemp%0xA2C2A ; //反推code nCode = (0x50 - ((nTemp -1)*0x59 % 0x50))+(nTemp-1) * 0x59 ; sprintf(szRes,"1.把注册机的五字符长度用户名输入nome处\r\n\r\n"); sprintf(szRes+strlen(szRes),"2.请在code处输入AAAAAA,而后点击Register按钮,弹框确认关闭便可\r\n\r\n"); sprintf(szRes+strlen(szRes),"3.请在code处输入%d,而后点击Register按钮\r\n\r\n", nCode); sprintf(szRes+strlen(szRes),"4.Register按钮消失,again按钮出现\r\n\r\n"); sprintf(szRes+strlen(szRes),"5.请再次在code处输入AAAAAA,而后点击again按钮,弹框确认关闭便可\r\n\r\n"); sprintf(szRes+strlen(szRes),"6.请再次在code处输入%d,而后点击again按钮,按钮消失,注册成功\r\n\r\n", nCode); SetDlgItemText(IDC_EDIT2,szRes);
crackme注册机的完整源码均在网盘
5.分析Again按钮事件函数
咱们如今已经成功的隐藏了Register按钮,可是又出来了一个Again按钮,有了如上的过程做为经验,咱们"依葫芦画瓢",对Again按钮进行分析,结果发现,其实验证流程彻底是重复了一遍Regsiter按钮,Again按钮点击事件逆向代码以下spa
能够看到,给[0x445830]赋值的隐藏算法和最后的合规核心算法,均自动显示出来了中文标签,这就是习惯作标签的好处,之因此会显示出来,那证实跟上方的Regsiter部分的两个算法均调用的相同的算法函数,参数相同,算法相同,那么结果必定相同了。
因此Again按钮消失的方法是跟Register如出一辙的,只是他消失后,再也不显示其余按钮而已,至此注册成功,Crackme007的标题也温顺的变成了Crackme by "your name"了。
是否是有如开头所说的征服美女的快感?去网盘中下载,试试吧
文章中涉及软件、课件、源码等均在网盘,为避免网盘连接失效,公众号中回复:网盘
欢迎关注微信公众号:逆向驿站
相关文章
标签:逆向|破解|反汇编|olldbg|渗透测试|病毒分析|网络安全|区块链本期标签:dededark|delphi反汇编|crackme|crackme7|crackme07