吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5505|回复: 19
收起左侧

[原创] 记一道自写VM的CrackMe WriteUp

  [复制链接]
ZJevon 发表于 2021-8-7 23:27
本帖最后由 ZJevon 于 2021-8-7 23:30 编辑

CrackMe原帖https://www.52pojie.cn/thread-1490003-1-1.html

0x00 易语言部分

打开是个易语言窗口,先用按钮事件找到关键函数(FF 55 FC 5F 5E)

image-20210807215907306

对于易语言用E-Debug 来分析是比较方便的,可以分析出大部分易语言特征函数。

整个易语言主要的操作就是:取当前目录 ->  把key.txt 和 CM.exe 写到文件。

image-20210807220945611

剩下的事情就和易语言没有关系了,主要分析CM.exe。

image-20210807221154014

0x01 CM.exe部分

加了upx壳,简单脱掉。记得关闭ASLR好分析一点

image-20210807224442429

image-20210807221333775

打开之后整个流程都很清晰,结合动调可以知道就是,程序前半部分就是为了后续进入自写VM做准备:开辟vm_opcode, vm_stack 和vm_reg 的存储空间,设置wm_reg的值。

有个有意思的点,这里创建了一个全是int3的线程想要影响我们动态调试。

image-20210807221735492

进入VM函数后可以看到整个函数非常的大,这个就是核心部分了。switch-case对应的就是opcode以及功能。

image-20210807221900704

这个时候光静态分析是很痛苦的,所以我们就结合x32dbg来分析一下opcode对应的功能。先到第一个dispatch,记得在转储中跟随wm_opcode ,wm_reg和 wm_stack。

image-20210807231149143

0x02 自写WM解题思路

按照最常规的思路就是先分析出对应case所模拟的功能,然后写脚本去还原。由于本体说可以追码解决,我就只分析了一点wm函数。例如:

image-20210807223231065image-20210807223217260image-20210807223436754

本题我抄了近路,观察wm_opcode区域,发现类似导入表的区域,这个其实是获取功能函数和最终比较的字符串。

image-20210807223519361

在`BQGJMBO和wm_exit的区域下断点,运行可以看到key.txt的内容已经读到内存中了。

image-20210807231311415

再次运行就到了退出的地方,猜测是按位检测的,查看wm_reg内容发现我们输入的和一个字符。猜测这个C就是第一个原始字符。

image-20210807231421176

所以现在知道第一个为C,以及对应的加密字符串为`,用CyberChef来分析前后加密内容,发现异或了#,并且通过跟踪wm流可以发现push #,怀疑都是按照这个加密的。

image-20210807231839427

image-20210807231923224

修改key.txt第一个字符为C,就会发现到结束的地方wm_reg内容变了。用CyberChef验证猜想。

image-20210807231641621

image-20210807232132292

最后我们就可以直接解出key了

image-20210807232335417

image-20210807232324651

0x03 总结

因为加密方式比较容易所以解出整个题目是不难的,如果变换了加密方式,我们最好还是按照规律用脚本还原对应的opcode。自写VM的整个模板化是比较规整的,值得拿来学习。

免费评分

参与人数 10吾爱币 +9 热心值 +8 收起 理由
JimsZack + 1 我很赞同!
jy04468108 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
阳光肥肥 + 1 + 1 我很赞同!
Stubborn6 + 1 用心讨论,共获提升!
wwwnwx + 1 热心回复!
厥丨舞 + 1 + 1 我很赞同!
又红又专 + 1 + 1 谢谢@Thanks!
风绕柳絮轻敲雪 + 1 + 1 用心讨论,共获提升!
QIJINLIANG + 1 + 1 我很赞同!
24k纯金滑稽 + 1 + 1 用心讨论,共获提升!

查看全部评分

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

 楼主| ZJevon 发表于 2021-8-7 23:39
zbnysjwsnd8 发表于 2021-8-7 23:39
这个CyberChef能分享下吗

https://gchq.github.io/CyberChef/ 这个网址
 楼主| ZJevon 发表于 2021-8-8 00:03
 楼主| ZJevon 发表于 2021-8-7 23:28
zbnysjwsnd8 发表于 2021-8-7 23:39
这个CyberChef能分享下吗
搜索曾经的回忆 发表于 2021-8-8 00:02
nextOpcode是干啥的
longyou12345 发表于 2021-8-8 00:02
好家伙,真不错
搜索曾经的回忆 发表于 2021-8-8 00:17
ZJevon 发表于 2021-8-8 00:03
当时想的是移动wm_eip 读取下一条指令码

没搞明白,我感觉不像
geekchina 发表于 2021-8-8 08:09
很好的解题思路,谢谢分享
jy04468108 发表于 2021-8-9 08:45
托克之后15kb的文件里面居然还带了vm。真是可以的!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 11:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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