海盗小K 发表于 2017-5-21 01:27

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

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


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


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


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





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


附件如下:


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:          ; <upx.核心库命令调用>
0040115E   |FF25 3C9B4600   jmp   dword ptr ds:          ; <upx.内存释放>
00401164   |FF25 2C9B4600   jmp   dword ptr ds:          ; <upx.获取窗口组件内容>


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

004BC0D3|.7CvFld8
004BBFDB|.5EvFsub8
004BBF03|.3AvFstp8

004BBAB7|.A7vFld8
004BBA4C|.5EvFsub8
004BBA48|.A5vFtst
004C0BB3|.C1vFstsw
004BA4D5|.02vFchs
004BA1C2|.3FvFcomp8
004B9DAC|.C1vFstsw

对比伪指,来看看一个易语言中标准的浮点数比较是什么样的. 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|.32vFmul8        // key*4
004BBFDB|.5EvFsub8        // key*4-1
004BBA4C|.5EvFsub8        // key*4-1-3157824491

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

Sound 发表于 2017-5-21 03:22

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

强烈的直觉是VMP的VM。

兰陵笑笑生 发表于 2017-5-21 08:39

{:301_1005:}坐等大佬出手,小白能力不足,前排围观

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分析思路。

byh3025 发表于 2017-5-21 09:21

关键处的代码全都看不懂了{:1_923:}

LLLYYYLLL 发表于 2017-5-21 09:32

围观大神搞CM

Pizza 发表于 2017-5-21 11:18

key: 789456123
是vmp加壳 只是虚拟化了代码 没有打包外壳而已

苏紫方璇 发表于 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加壳 只是虚拟化了代码 没有打包外壳而已

日了狗那么厉害膜拜牛人
页: [1] 2
查看完整版本: 一个简单而又奇怪的CM,求详细分析,CB奖励