吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2025|回复: 6
收起左侧

[CrackMe] 换换口味,我第一个MFC程序

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

本人第一个Cracke程序,用C++编写。什么都没做,单纯的release生成的文件。
花了我很多心思写这个程序,看看强度如何。哈哈

网盘链接:链接:https://pan.baidu.com/s/1n9qACLZ6kTapsbpl6eiasA  提取码:uex2

本帖子中包含更多资源

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

x

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xiaoyu2032 + 1 + 1 谢谢@Thanks!

查看全部评分

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

xiaoyu2032 发表于 2022-4-20 00:39
本帖最后由 xiaoyu2032 于 2022-4-20 16:11 编辑

  输入错误有错误弹窗提示,因此优先考虑在弹窗下断点,在CODE区按Ctrl+N查找当前模块中的名称,找到MessageBoxW函数,右键“在每个参考上设置断点”,这样可以下到3个断点。

  运行,输入错误信息,登录,断在4036F8位置,该处即为错误弹窗。(另外两个断点一个是注册按钮的弹窗,一个是参数错误的弹窗)

  一直往上翻,翻到4033E0位置,可以确定为关键函数的入口地址。

  关键函数代码段很长,F8单步跟踪走一遍,应该能发现下图位置的代码在对字符串进行比较。

  比较的内容看寄存器区域可以发现是两个长度为40的字符串,其中一个是随输入用户名变化而变化的,另一个是不变的。

  初步猜测是sha1加密字符串,将用户名“111”做sha1加密,发现和其中一条一致,因此可以确定为sha1加密比较。
  字符串搜索:常用字符串搜索大法,OD中使用智能搜索,找不到任何有效的提示字符串,但是用搜索UNICODE,可以搜索到“不可以为空”、“不可以空”、“为了美观,未实现”等提示字符串,意外的可以发现其中还有一个字符串是“wangzhiyu52pojie”,拿去sha1一下,发现命中,这个就是正确的用户名了。

  其实在程序运行后,在内存中搜索“you are wrong”和“you Success”[UNICODE]也是能找到的,但是尝试过在内存中设断点,不大好用,断的次数太多,找不到位置(可能我没掌握技巧)。
  以上是比较容易分析出来的结果,接下来的验证过程,由于程序里面设计了反反复复好多重的验证,F8单步跟踪很容易迷失方向,因此需要多找一些参照点来进行定位,包括错误提示代码段、正确提示代码段,这样才便于判断哪些是关键跳转,避免改错到程序异常。
  错误弹窗代码段前面已经找到了,正确提示代码段怎么找呢?
  根据作者给出的成功界面,成功时界面上的按钮和输入框等控件都不显示了,只显示“you Success”字符串,因此成功时程序应该是对这些字符串进行了隐藏操作(还有一种可能是对主界面进行了隐藏操作,然后另外显示一个界面)。
  因此可以找个工具来查看一下程序的资源,ResScope(论坛虚拟机自带),打开后可以查看到主界面中的主要控件的ID编号,比如“用户名:”字符串,其ID为1003,其他还有1003,1005等。

  根据一般的编程经验,无论VC、Delphi、VB还是易语言,对windows界面的控件状态的控制,一般都是是根据控件ID来设置其属性来实现的,因此要隐藏控件,程序代码中肯定要对赋值对应的ID常量。在OD中搜索常量1001(16进制3E9),可以看到共有4处。

  分别双击过去查看,可以发现403731就在关键函数内,后面还有1002、1003等,基本可以确定这里就是输入正确时需要执行的代码,前面的跳转中凡是跳过这段的都是验证失败的跳转。

  另外,通过IDA转成伪代码后,也很容易看出如下所示代码为控件属性设置代码。

  有了以上信息,爆破就比较简单了,F8跟踪运行到403486处,有个跳转是跳到错误弹窗函数位置,此处可以配合4034B9处的大跳转(该处大跳转也是跳到错误处理流程去),先将403486行改成“jmp short 004034B9”,再将4034B9行改成“jmp 0040372C”,直接跳到正确处理流程代码位置。
[Asm] 纯文本查看 复制代码
00403486     /75 1E         jnz short crackeMe.004034A6
004034B9     /E9 38020000   jmp crackeMe.004036F6


  403726也是一个判断跳转,上面修改的代码直接跳到它的下一步。

  这样,爆破就完成了。用户名和密码区输入任意内容(非空),点击“登录”,即可显示成功界面。


本帖子中包含更多资源

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

x
rz66 发表于 2022-4-18 13:26
软件逆向了不少,但竟然从未玩过 Crackme,看来我是功利型。
等待大神们的分析文章。感谢先。
xiaoyu2032 发表于 2022-4-18 23:42
花了一晚上,还没找到。VC的窗口处理流程看不懂啊
 楼主| wangzhiyuyeshou 发表于 2022-4-20 16:53
xiaoyu2032 发表于 2022-4-20 00:39
输入错误有错误弹窗提示,因此优先考虑在弹窗下断点,在CODE区按Ctrl+N查找当前模块中的名称,找到Messag ...

强啊,大佬。
第一个框本来想做字符串隐藏的,就用智能搜索搜了一下,没看到就以为隐藏掉了。哈哈,下次还得试试unicode搜索。全隐藏了才行。
scncrenyong 发表于 2023-2-15 14:47
本帖最后由 scncrenyong 于 2023-2-15 15:29 编辑



用户名:wangzhiyu52pojie
密码是:you kill me!oh no ,i am wangzhiyuyeshou!123456789

本帖子中包含更多资源

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

x
fancyblue 发表于 2023-4-15 09:37
xiaoyu2032 发表于 2022-4-20 00:39
输入错误有错误弹窗提示,因此优先考虑在弹窗下断点,在CODE区按Ctrl+N查找当前模块中的名称,找到Messag ...

https://www.52pojie.cn/thread-1772753-1-1.html   这个帮忙看看?大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 11:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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