吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3180|回复: 15
收起左侧

[CrackMe] 整个简单的cm娱乐一下

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

本帖最后由 苏紫方璇 于 2021-6-30 00:39 编辑

一个简单的c/c++控制台cm,可爆破可逆算法,自我感觉适合新手练习,没反调试,成功失败有明显提示。
由于过于简单Key就不给了,容易猜出来。






6.30
附上源码参考交流,源码为vs2015工程,编译后部分地方需要手动修改,已在源码中注释

本帖子中包含更多资源

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

x

免费评分

参与人数 8吾爱币 +7 热心值 +7 收起 理由
xukefei + 1 + 1 鼓励转贴优秀软件安全工具和文档!
xiaoyu2032 + 1 + 1 谢谢@Thanks!
看你麻痹 + 1 这个支持一下 感觉有点难度
jy04468108 + 1 + 1 比较复杂,懒得搞了。
suadzh + 1 + 1 支持大佬
小菜鸟一枚 + 1 + 1 我逆不出来
xiangcc + 1 + 1 我很赞同!
wu-ai-po-jie + 1 用心讨论,共获提升!

查看全部评分

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

 楼主| 苏紫方璇 发表于 2021-6-28 23:24
iTruth 发表于 2021-6-28 22:55
把004013EC处的push 0改为push 1之后把输出的代码直接复制粘贴即可

是未曾设想过的破解方式呢666
iTruth 发表于 2021-6-28 22:55
把004013EC处的push 0改为push 1之后把输出的代码直接复制粘贴即可

本帖子中包含更多资源

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

x

点评

是未曾设想过的破解方式呢666  详情 回复 发表于 2021-6-28 23:24

免费评分

参与人数 6吾爱币 +9 热心值 +5 收起 理由
chermy + 1 + 1 看到了熟悉的沙盘
三滑稽甲苯 + 1 + 1 我很赞同!
Myitmx + 1 + 1 我很赞同!
涛之雨 + 4 + 1 用心讨论,共获提升!
看你麻痹 + 1 这是怎么找到的呀 请问大佬有思路吗
苏紫方璇 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

xiaoyu2032 发表于 2021-6-29 10:13
iTruth 发表于 2021-6-28 22:55
把004013EC处的push 0改为push 1之后把输出的代码直接复制粘贴即可

大佬这个怎么看出来的?
我研究了一晚上,只能看出来这个程序大概是根据硬件信息算了一个类似hash的32位码,失败、成功的提示信息都是加密保存的,可能需要输入的码正确才能解密出来,这样在没有能力逆算法的情况下,很难找到关键跳转,不知道理解的对不对?

点评

hash是md5 目测楼上大佬把算法整明白了,提示信息并不参与算法key解密,只是给搜字符串加点障碍,另外提示一下,关键跳转是用其他方式实现的,并非是条件转移指令  详情 回复 发表于 2021-6-29 10:37
 楼主| 苏紫方璇 发表于 2021-6-29 10:37
xiaoyu2032 发表于 2021-6-29 10:13
大佬这个怎么看出来的?
我研究了一晚上,只能看出来这个程序大概是根据硬件信息算了一个类似hash的32位 ...

hash是md5  目测楼上大佬把算法整明白了,提示信息并不参与算法key解密,只是给搜字符串加点障碍,另外提示一下,关键跳转是用其他方式实现的,并非是条件转移指令
xiaoyu2032 发表于 2021-6-29 11:15
苏紫方璇 发表于 2021-6-29 10:37
hash是md5  目测楼上大佬把算法整明白了,提示信息并不参与算法key解密,只是给搜字符串加点障碍,另外提 ...

上午再跟了一会,想找到提示字符串的怎么出来的,失败字符串放置12FD1C这个地址,之前是一堆其他信息,通过xor 0x1A解出来的,想找解密前字符串的怎么来的,发现代码有些奇怪。如下:
00166DD3    0000            add byte ptr ds:[eax],al
00166DD5    0000            add byte ptr ds:[eax],al
00166DD7    0008            add byte ptr ds:[eax],cl
00166DD9    004400 B2       add byte ptr ds:[eax+eax-0x4E],al

7C92E460    8B1C24          mov ebx,dword ptr ss:[esp]
前面几步都是把相加的结果放在eax指向的地址,第四步执行后就调到系统领空7C92E460去了,好奇怪。
不是条件指令的话大概应该就是call 函数地址,有一个地方用了call eax,跳到不同的堆栈地址,再看看。
xiaoyu2032 发表于 2021-6-29 12:16

根据提示,终于找到了关键位置。
这种方法需要要有一个正确的码才有可能找到关掉调用函数的地址。

Call eax是关键调用,错误地址是166C9D,正确是401160正确值时要求ecx64,错误时为23,函数地址值ecx*A403+34得出的,此处直接改会导致后续指令被覆盖

因此到上一处传入ecx的位置修改,也需要在前两个指令处修改代码,才不会覆盖掉40168B的指令。



本帖子中包含更多资源

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

x

点评

没错,验证部分是用的SEH和call一个正确的地址,若key正确,则计算结果为0x64,错误时可能为0-0x63,写完cm自己试了一下,不看算法,找解密字符串函数,查交叉引用即可发现关键位置  详情 回复 发表于 2021-6-29 13:01

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
苏紫方璇 + 1 + 1 用心讨论,共获提升!

查看全部评分

 楼主| 苏紫方璇 发表于 2021-6-29 13:01
xiaoyu2032 发表于 2021-6-29 12:16
根据提示,终于找到了关键位置。
这种方法需要要有一个正确的码才有可能找到关掉调用函数的地址。

没错,验证部分是用的SEH和call一个正确的地址,若key正确,则计算结果为0x64,错误时可能为0-0x63,写完cm自己试了一下,不看算法,找解密字符串函数,查交叉引用即可发现关键位置
xiaoyu2032 发表于 2021-6-29 13:05
苏紫方璇 发表于 2021-6-29 13:01
没错,验证部分是用的SEH和call一个正确的地址,若key正确,则计算结果为0x64,错误时可能为0-0x63,写完 ...

这种要是没有正确的key,如何能找到正确的调用函数地址?

点评

不清楚你是怎么找到的,我这个比较简单,看解密字串的交叉引用就可以找到,复杂环境下,没正确的key还真不好确定正确的调用地址  详情 回复 发表于 2021-6-29 13:14
 楼主| 苏紫方璇 发表于 2021-6-29 13:14
xiaoyu2032 发表于 2021-6-29 13:05
这种要是没有正确的key,如何能找到正确的调用函数地址?

不清楚你是怎么找到的,我这个比较简单,看解密字串的交叉引用就可以找到,复杂环境下,没正确的key还真不好确定正确的调用地址
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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