160个Crackme之004 ajj.1

2024-01-25 06:20
文章标签 crackme 004 160 ajj.1

本文主要是介绍160个Crackme之004 ajj.1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:ajj
难度:★★
保护方式:Name/Serial(Delphi)

运行程序
在这里插入图片描述
程序没有确定按钮,所以直接丢到OD中分析。

虽然没有确定按钮,但是有输入框,所以应该调用了GetItemTextA,所以只要在OD中给这个API下断点就可以分析了,可是这个程序是Delphi程序,它的API并不是GetItemTextA,所以暂时放弃这个想法。

在OD中通过中文搜索引擎的智能搜索查找字符串,发现有用的字符串"恭喜恭喜!注册成功"
在这里插入图片描述

可问题是这个程序没有确定按钮,如何触发到代码?
OD对Delphi实在有点有心无力,我们还是用Delphi专门的反编译工具DarK吧,打开DarK并将程序打开,点击开始处理,处理完成后会进行一些拓展处理,一路点“是”。
在这里插入图片描述

分析好以后点击窗体,这个窗体包含了程序所有的窗口
在这里插入图片描述
可以看到有一个TForm1窗口,它就是程序的主窗口,双击它会弹出两个窗口,一个是模拟出来的主窗口,还有一个是控件绑定信息窗口,这个窗口包含了所有的控件信息,通过鼠标在模拟的主窗口上面移动,控件绑定信息窗口会选中当前控件。
在这里插入图片描述

在这里插入图片描述

Label1-Label6和Image1都是不可交互控件,所以重点看Edit1、Edit2和Panel1。
选中Edit1控件,可以看到右边的子窗口有一个成员OnKeyUp,当键盘按键弹起时会调用KeyUp函数。
选中Edit2控件,跟Edit1类似,不过它调用的是chkcode函数
选中Panel1控件,可以看到成员OnClick绑定的函数是Panel1Click,OnDblClick绑定的函数是Panel1DblClick,也就是说单击图片会调用Panel1Click,双击图片会调用Panel1DblClick。

回到DarK的主窗口点击“过程”,可以看到所有关联函数的RVA

在这里插入图片描述
通过这几个函数的RVA,在OD中找到代码,打断点。

运行程序后首先调试KeyUp函数,当Edit1处于激活状态时,键盘按键弹起时会触发这个函数。

输入tutucoo,当输入完第1个t时,程序断下,位于0x457e4c,这个函数没有核心算法,接着分析Edit2
在这里插入图片描述

Edit2绑定函数位于0x457c40,当Edit2中有任意输入时断下。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

分析到0x457d2f处时,可以看到字符串"黑头Sun Bird12dseloffc-012-OK",猜测这个字符串就是注册码。
这个函数先分析到这,接着分析Panel1Click,它位于0x457fb8,当鼠标点击Panel时会触发。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个函数的末尾可以看到注册成功的字样,因此可以认为这个函数是最终的比对函数。
根据目前分析到的信息,可以作这样的猜测:
1.注册码是否为“黑头Sun Bird12dseloffc-012-OK”(用户名为7位的情况)
2.内存某处是否是0x85
此时我们已经知道了注册码,那0x85是在哪里设置的呢?先不急,分析完最后一个函数,也许这个问题就解决了。

最后一个函数Panel1DblClick,在Panel上双击触发此函数,程序断在0x457e7c处。
在这里插入图片描述

这个函数会将esi+0x30c覆盖为0x85,不过前提是esi+0x30c保存的是0x3e。

在[ESI+0x30C]上右键点击查找参考->地址常量,打开常量窗口,找到赋值3E的位置下断点。
在这里插入图片描述

我们跳转过去发现赋值3E的位置位于Edit2函数中,之前分析单步时没有走到这一步直接跳过去了,所以没注意。可以猜测,在Edit2中输入注册码时这个函数会一直调用,直到注册码为正确。

调试,输入用户名:tutucoo,正确的注册码:黑头Sun Bird12dseloffc-012-OKtutucoo,程序断下,成功赋值3E。

在这里插入图片描述

总结下这个程序的算法:
1.任意输入一个用户名
2.根据用户名输入正确的注册码,程序会在这一步循环检测注册码是否正确,如果是正确的,将3E存储到esi+0x30c
3.用户双击Panel,程序会检测此时esi+0x30c处的值是否是3E,如果是3E,将esi+0x30c赋值为0x85
4.用户单击Panel,程序会检测用户名、注册码以及esi+0x30c处是否为0x85

以上几步全部顺利通过程序就被破解了

这篇关于160个Crackme之004 ajj.1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642350

相关文章

新160个crackme - 051-Keygenning4newbies

运行分析 需要破解Name和Serial PE分析 C++程序,32位,无壳 静态分析&动态调试 ida找到关键字符串,双击进入函数 静态分析得到以下结论:1、Name长度要大于4,小于502、v5 += Name[i] ^ (i + 1)3、v7 = 最后一个Name[i] ^ (i + 1)4、Serial = (v5<<7) + 6* v7 的16进制

新160个crackme - 050-daxxor

运行分析 需要破解Name和Serial PE分析 C++程序,32位,无壳 静态分析&动态调试 ida找到关键字符串,双击进入函数 通过静态分析发现:1、Name通过计算得到Name12、对Name1第3、5、6分别插入byte_401290、byte_401290、word_401292,得到Name23、双击byte_401290,发现值为0x2D;双

004: VTK读入数据---vtkImageData详细说明

VTK医学图像处理---vtkImageData类 目录 VTK医学图像处理---vtkImageData类 简介: 1 Mricro软件的安装和使用 (1) Mricro安装 (2) Mricro转换DICOM为裸数据  2 从硬盘读取数据到vtkImageData 3 vtkImageData转RGB或RGBA格式 4 练习 总结 简介:         对于医

【MATLAB源码-第160期】基于matlab的胡桃夹子优化算法(NOA)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境: MATLAB 2022a 1、算法描述 胡桃夹子优化算法(Nutcracker Optimization Algorithm, NOA)是一个灵感来源于胡桃夹子的故事的元启发式优化算法。这个故事中,胡桃夹子是一个能够将坚果壳轻易地破开以获取内部果仁的工具。在优化算法的语境下,这个过程被比喻为寻找问题解决方案的过程,即如何有效地“破开”问题的“坚硬外壳”以到达其核心或最优解。 灵

新160个crackme - 045-CyTom-crackme

运行分析 需要破解Name和Serial PE分析 Delphi程序,32位,无壳 静态分析&动态调试 ida找到关键字符串,双击进入 动调主函数,函数sub_4251A0作用未知 函数sub_4251A0作用:Name每个字符ascii相乘 算法分析 Name = 'concealbear'a1 = 1for i in range(le

新160个crackme - 043-riijj_cm_20041121

运行分析 除了主程序还有一个dll文件,应该是要加载pf1.dll这个动态链接库运行主程序,需破解Name和Serial,点击注册无反应 PE分析 C++程序,32位,无壳 静态分析&动态调试 尝试ida动调加载动态链接库pf1.dll,弹出错误,推测存在反反调试 使用OD的StrongOD插件绕过反反调试,设置参数如上 程序拖入OD,点击F9,

新160个crackme - 042-crackme

运行分析 提示需要key.dat文件 同目录下创建一个key.dat,提示key.dat内容不对 PE分析 C++程序,32位,无壳 静态分析&动态调试 ida搜索字符串,找到关键字符串双击进入关键函数 对关键函数进行分析,注释如上当满足67行公式时,将会执行下面函数发现89行有个VirtualProtect,即SMCSMC(Self-Modifying

SpringMVC_004_HiddenHttpMethodFilter

html中form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求。 在web.xml中加入 <filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.

Leetcode 160. 相交链表-----python

160. 相交链表 题目描述: 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 解题思路: python代码实现: class Solution(object):def getIntersectionNode(self, headA, headB):""":type head1, head1: ListNode:rtype: ListNode"""if he

新160个crackme - 041-genocide1

运行分析 提示未找到Reg.dat文件 同目录下创建Reg.dat即可打开程序点击About -> Register,打开注册窗口,但是无法点击OK键 PE分析 upx壳,32位 upx -d crackme.2.exe脱壳 发现是Delphi程序 静态分析&动态调试 DeDeDark打开程序进行分析,发现了注册窗体OK按钮:Butto