CKme/CKme002分析

1.CKme

CKme是Delphi写的,没壳。于是打开运行了下。就下面这样。

Delphi写的,但我也没接触过这个东西,开始的时候我以为中间这个灰框是个大按钮,输了点东西就去点,点也没反应,又把窗口左右拉升,也没藏着什么小按钮,直接拖OD里面也看不出什么东西,没办法只能查,Delphi有个反编译的工具DarkDe。它能将Delphi程序中的各种事件的地址解析出来,具体深入的一些功能还不太了解,慢慢熟悉。这些工具都在吾爱破解工具包里,结尾放链接,及160个CM。

知道这个东西以后,就感觉是不是可以找找看,把程序拖到DarkDe中,在过程窗口中显出出了程序用的一些事件在内存中的偏移。通过简单的意思大概猜一下chkCode应该就是检查输入的字符串什么的,Keyup按键弹起,下面两个一个双击,一个单击。然后就在OD下断,进去一看果然是几个函数样子的首地址,那具体做什么的只能跑起来才能看出。

然后就开始F9。先随便输一个,立刻断了下来。断到了KeyUp这,F9继续,又输一个,又断在了这,也就是键盘上按键输入后,弹起来,就会断下。这个稍微跟了下,跟消息循环里面去了,直接F9出来

这次在注册码里输点东西,这次断到了0x457C40处。

然后我想不是还有个单击双击么,下面那个灰框是不是用来点的,鼠标猛点一顿,断在了0x457FB8处单击,但我也双击了啊,没断在双击位置处?分析到这,别的也没什么好看的了。想一下,输入用户名后,断在了一个弹起按键的事件中,输入注册码后又断在了检测事件中。当输入注册码比对完后,我点击了下面的灰框,然后就一直断在单机事件里,双击没出现过。那就从检测事件里面看下怎么检测的。

 整个流程先有两个固定的字符串"黑头Sun Bird","desloffc-012-OK",把这两个拼接起来后"黑头Sun Birddesloffc-012-OK",然后把输入的字符串接到最后"黑头Sun Birddesloffc-012-OK字符串"。

然后中间那段代码只知道它是做什么的,没明白什么意思,就是获取输入的字符串长度+3,然后接到字符串最前面,然后字符串结尾从'0'开始一直加到'18',就下面这个图的意思。我输入的是777,长度+3就是6。

最后获取输入的注册码,然后和正确的注册码也就是拼接的那一串做比较,正确的话下面的数+0x3E,错误的话就别的分支

 在比较完后,还有一段和上面这个操作一样的函数,接着就是栈的清理工作。然后就进入了循环,运行的时候,只要我修改注册码的字符串,它就会断下来去检测。也就是程序不停在获取输入的字符串,然后做比较,比较正确,就是一个分支,错误就是另外一个分支。比较函数我跟了下,就是那个拼接的字符串和输入的字符串做比较。所以注册码应该就是那个字符串。

重新运行程序,还是777,注册码是"黑头Sun Birddesloffc-012-OK777",调试时可以把所有断点都禁用掉,等输完再恢复。

这次输入的是正确的,所以它断在了+0x3E处。继续跑起来。先单击一下,断到了单机事件处理函数。然后它会进入判断的函数。

然后又双击了一下,确实断到了双击的事件函数中

但是还是没什么反应,所以多次点击尝试后,发现,程序是这样的,当输入的名字和注册码检测后不正确,只会触发单击事件,当输入检测正确后,可以触发双击事件了,触发双击事件后,再单击一次,原先按钮处的位置就显示一副图片,那个被点击的区域通过查看DarkDe的窗体,可以了解是一个Panel控件(panel是一个容器类,一般用来放其他控件)。这个程序总体来说就是对Delphi的一些了解,在找有用信息没有头绪的时候,借助其他一些解析工具做辅助,找到下手地方。第二个有点复杂整理下整理下再写

工具包:https://pan.baidu.com/s/1-rPGu_kxqKaLr1O_XiHFEw

160个CreakeMe:https://pan.baidu.com/s/1yFvKQaEd6tBIhcYDQ19drQ    提取码:39ah
 

猜你喜欢

转载自blog.csdn.net/weixin_42489582/article/details/84950666