-
-
[原创]160Crackme之05CKme002.exe
-
发表于: 2022-3-27 12:09 5161
-
【思路】
一开始运行程序,只有一个编辑框,点击按钮没用,点击图片没用,一共四张图滚播
查看信息,发现是Delph写的,用软件查看窗口信息
发现有两个编辑框;并且记录下函数地址和控件ID方便调试中比对
决定先重搜索字符串下手,看能不能找到有用的东西,如果没有,就从MessageBox下手(点击图片会弹出MessageBox)
【找到关键爆破点】
通过搜索字符串发现了关键点,然后找到5个跳转的关键点,只要不跳转,就能执行到响应正确的位置
【1.[EBX+304]!=C34】
通过搜索常量C34找到赋值的地方;
关键的是必须得执行上一条jcc指令跳过赋值
从函数开头开始动态调试看看什么情况
并且可以这个函数是FormCreate函数
【重点位置分析】
其中有给[ebx+308]和[ebx+314]赋值得地方
有通过路径CreateFile得地方:比较错误码
还有ReadFile得操作;然后是对比内容
总结得出,指定路径下存在指定内容得文件,便可使得第一个关键点不跳转
【2.[EBX+310]==F94】
在指定路径存储了指定内容得文件后,再次运行程序,发现会多了一个被禁用得编辑框
我们第二个关键跳转,在第一个关键跳转得时候就已经赋值满足不会跳转
通过搜索常量310和F94能够找到以下函数:FormMouseMov 鼠标移动函数
因为赋值在最下面。我们从头动态分析看看
一开始就有两个参数,看了很多次发现不了规律,后面想移动鼠标函数,会不会是X和Y得值,经过确定验证猜想
后面可以看到image3和image2得ID,然后[ecx+47]==1才执行内容(代表此时播放得是哪张图)
所以根据下面逻辑,先有在播放第三张图得时候,从右下方进入;然后再播放第二张图得时候从左下方进去
进去之后出现问题了,[ebx+30c]不能等于9,否则会跳过F94赋值,但是[ebx+30c]==9在第一个关键跳转得时候就赋值了
只能再次搜索关于30c和9得指令,看看哪里可以做修改
【2.2[ebx+30c]!=9】
接上面第三个关键跳转时候,在响应完鼠标进入程序后,遇见阻碍点,看哪里能给[ebx+30c]赋值让其不等于9
通过搜索对比,我们发现指令mov dword ptr ds:[ebx+30c],eax应该是我们找得地方了
此指令位于Edit2DblClick函数中,双击编辑框2才会执行,所以目前要找到启动编辑框2得方法,才能继续验证
下方【2.3】写启动编辑框2的方法;此章节继续分析启动编辑框2后,双击编辑框2运行代码
对编辑框1和编辑框2的内容的判断
编辑框2必须8位数,第2位第6位分别是 "_" 和 ","
编辑框1的位数必须是3的整数倍,前3字符必须是ajj
按照要求输入内容在双击编辑框2后,发现此时的[ebx+30c]已经不是9了
那么接上面的内容可以达到[ebx+310]的F94赋值了
【2.3开启编辑框2】
只有开启编辑框2后,才能双击调试是否mov dword ptr ds:[ebx+30c],eax是我们找的地方,eax是不是不等于9
通过搜索编辑框的ID查找有关指令,分析指令位于哪些函数中,只有Panel1DblClick双击图片控件比较像
进去调试发现,要满足[eax+308]==29D的时候,才会执行开启按钮2的函数,但是在关键跳转1的时候已经为其赋值了28E
继续搜索常量308,看其在哪些地方有修改的
发现在Button1MouseDown点击按钮1的函数中,存在对[eax+308]的多次修改
会发现cmp cl , 1 只有cl是1的时候,才不会将[eax+308]赋值成230D,所以必须点击鼠标右键
并且每次+3;从28E到29D一共右键点击5次 "注册"按钮
【2.4接[EBX+310]==F94】
此时[ebx+30c]!=9,也实现了对[ebx+310]的赋值F94。关键跳转三已经解决,
但是后面的指令将[ebx+314]赋值了DF(关键跳转四有做比较)
还有对Edit1编辑框的内容做了比较
【3.[ebx+318]==[ebx+314]】
关键跳转4是将[ebx+318]和在上面赋值成DF的[ebx+314]做比较
只有相等的时候,才会正确执行
通过关键字搜索318可以发现,在每张图片被点击后,都会对318进行一个赋值的操作(默认的时候318里面是0)
bl是否等于1代表的是否右键点击
然后就基本告破了