吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5144|回复: 20
收起左侧

[CrackMe] 一个简单而又奇怪的CM,求详细分析,CB奖励

[复制链接]
海盗小K 发表于 2017-5-21 01:27
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

这个CM是很多年前一个大牛随手甩给我的,本来应该很简单的,可能我功底太差,用了各种常规的方法还是没什么头绪。


看起来是没壳的,但是区段有点奇怪,有个.upx0区段。


我用过了暂停法、按钮事件法、堆栈回溯法进行分析,得到的代码总是乱的,EIP经常到处跳。真心希望求大牛指点指点。不胜感激。


成功图(成功是因为我知道密码,我自己的能力并不足以分析出来):





如果能说明详细的分析过程(是否加壳、是否加密、如何爆破和追码),我将在悬赏区以88CB奉上。先谢谢各位大佬~


附件如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Pizza 发表于 2017-5-21 16:04
其实从易语言核心库入手还是有用的

易语言程序 用E-Debug2.0分析一下
           
/**********************************************************************/
           /*                            ->开始分析<-                            */         分析地址:0x400000 内存大小:0xC2000
           /**********************************************************************/
                                419FD0 -> 设置窗口组件内容
                                419FB0 -> 获取窗口组件内容
                                41A070 -> 内存申请
                                41A1A0 -> 内存释放
                                419C60 -> 核心库命令调用
                                419C20 -> 三方库命令调用
                                419BE0 -> 数据表初始化
                                41A0C0 -> 结束
                                419C10 -> Api调用
                                41A0E0 -> 内存分配
                                419F90 -> 运行出错回调
           /*====================================================================*/
           /*=====支持库调用命令分析=============================================*/
           /*====================================================================*/
           ----系统核心支持库 (d09f2340818511d396f6aaf844c7e325)
                                004011D0       --> 4011D0 (到整数)
                                004013D0       --> 4013D0 (信息框)
           /*====================================================================*/
           /*======Api命令分析===================================================*/
           /*====================================================================*/
           /**********************************************************************/
           /*                           ->结束分析<-                             */
           /**********************************************************************/

可以从这几个地方切入
00401158   /FF25 289B4600   jmp     dword ptr ds:[0x469B28]          ; <upx.核心库命令调用>
0040115E   |FF25 3C9B4600   jmp     dword ptr ds:[0x469B3C]          ; <upx.内存释放>
00401164   |FF25 2C9B4600   jmp     dword ptr ds:[0x469B2C]          ; <upx.获取窗口组件内容>

程序流程大概如下:
1. 获取编辑框文本内容
2. 到整数
3. 释放文本内容的内存
4. 运算比较
5. 信息框
从释放内存之后进行跟踪.如画眉前辈所说,是老版本的vmp,可以直接用zdhysd前辈的vmp分析插件来分析伪指令.
从004BB7EF开始分析,分析出来的伪指令有上万行.在释放内存返回后,从堆栈里找到整数型的key,下硬件访问断点,中断在vReadMemSs4.
004BC917  |.  46  vReadMemSs4
004BC916  |.  68  vFild4
可以看到,从堆栈获取key后紧接着一个fild.易语言中几乎所有算数运算都是浮点数运算,接下来可以尝试直接找浮点数运算相关的handler.
004BC916  |.  68  vFild4
004BC8DE  |.  D2  vFstp8
004BC6CE  |.  20  vFld8
004BC585  |.  32  vFmul8
004BC2CB  |.  43  vFstp8

004BC0D3  |.  7C  vFld8
004BBFDB  |.  5E  vFsub8
004BBF03  |.  3A  vFstp8

004BBAB7  |.  A7  vFld8
004BBA4C  |.  5E  vFsub8
004BBA48  |.  A5  vFtst
004C0BB3  |.  C1  vFstsw
004BA4D5  |.  02  vFchs
004BA1C2  |.  3F  vFcomp8
004B9DAC  |.  C1  vFstsw

对比伪指,来看看一个易语言中标准的浮点数比较是什么样的.
fld     operand1
        fsub    operand2
        ftst
        fstsw   ax
        test    ah, const
        je      short @f
        fchs
        @@:
        fcomp   9.999999999999998e-08

        fstsw   ax
        test    ah, const
        je      somewhere ; key jump

在handler上下断点,可以得到参数.
004BC585  |.  32  vFmul8        // key*4
004BBFDB  |.  5E  vFsub8        // key*4-1
004BBA4C  |.  5E  vFsub8        // key*4-1-3157824491

反向推算一下,(3157824491+1)/4=789456123.

点评

VM引擎解释不了的指令会原样放到虚拟机外面执行,正好易语言的浮点运算他都搞不定。结果就GG了  发表于 2017-5-21 18:40

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
凉游浅笔深画眉 + 1 + 1 厉害了 么么哒
苏紫方璇 + 1 + 1 简直6到不能行

查看全部评分

Sound 发表于 2017-5-21 03:22
看起来是没壳的,但是区段有点奇怪,有个.upx0区段。

强烈的直觉是VMP的VM。
兰陵笑笑生 发表于 2017-5-21 08:39
KaQqi 发表于 2017-5-21 08:54
本帖最后由 cqr2287 于 2017-6-14 18:14 编辑

.vmp0
.vmp1

.upx0

确实有点像

前排膜拜bazzi
凉游浅笔深画眉 发表于 2017-5-21 08:56
本帖最后由 凉游浅笔深画眉 于 2017-5-21 11:02 编辑



老版本的VM

只会爆破,方法太low,坐等大牛贴VM分析思路。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

点评

除了膜拜我还能说什么呢,为什么你总是那么的任性  发表于 2017-5-21 12:41

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
海盗小K + 1 + 1 画眉兄也总是这么厉害,先膜一下~
byh3025 + 1 + 1 小白表示膜拜,高手之高高手

查看全部评分

byh3025 发表于 2017-5-21 09:21
关键处的代码全都看不懂了
LLLYYYLLL 发表于 2017-5-21 09:32
围观大神搞CM
Pizza 发表于 2017-5-21 11:18
key: 789456123
是vmp加壳 只是虚拟化了代码 没有打包外壳而已

免费评分

参与人数 3吾爱币 +4 热心值 +3 收起 理由
海盗小K + 2 + 1 日常膜拜一下靶子牛~厉害了~
leroy特洛伊 + 1 + 1 接受我的膜拜
苏紫方璇 + 1 + 1 厉害了

查看全部评分

苏紫方璇 发表于 2017-5-21 11:35
_BaZzi 发表于 2017-5-21 11:18
key: 789456123
是vmp加壳 只是虚拟化了代码 没有打包外壳而已

日常膜拜把子牛
leroy特洛伊 发表于 2017-5-21 13:21
_BaZzi 发表于 2017-5-21 11:18
key: 789456123
是vmp加壳 只是虚拟化了代码 没有打包外壳而已

日了狗  那么厉害  膜拜牛人
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表