吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22285|回复: 209
上一主题 下一主题
收起左侧

[原创] 玩玩破解,写给新人看(第十八集)

    [复制链接]
跳转到指定楼层
楼主
yyhd 发表于 2021-2-5 22:40 回帖奖励
本帖最后由 yyhd 于 2021-10-16 00:24 编辑

破解软件使用次数


回顾一下上集的内容,主要讲了三个知识点:

1、软件脱壳后,通常会有文件大小的校验。

2、通过对函数GetFileSizeFindFirstFile下断点绕过反调试。

3、初步介绍易语言的按钮事件断点的使用。

本集,我们再换个玩法。

首先,我们来看看本次CM的特点:有使用次数的限制。

第一次运行CM提示如下:




看到吗?你只有5次机会。

每次重新打开这个CM,使用次数会减少1次。

如果当你达到5次以后,再打开CM,见下图:




旁边有一个重新开始按钮。

如果你还没有破解成功,或者还想用OD再分析,你就点一下这个按钮,你就可以重新获得5次机会。

呵呵,设计的够人性化吧。

我为什么要自己写课件CM?

因为能够真正符合讲课内容的需要。

真正符合新人朋友们多次进行练习的需要。

当你破解成功后,会出现下图:




而且你每次重新打开CM,都不需要再重新输入账号和密码了。

好了,这就是属于有使用次数限制的软件。

那么,我们怎么破解呢?

我们先思考一个问题:软件怎么会知道我们打开了几次呢?

显然应该有个记录,每打开一次CM就记录一次。

我们如果能够找到这个记录,修改一下记录的次数,是不是就可以破解成功了呢?

呵呵,思路完全正确!

我们继续思考。

这个记录会存放在哪里呢?

首先不可能存在程序本身,因为程序每次关掉后数据都会清空。

那一定在我们使用的电脑上的某个位置。

是的,这个位置可以是注册表,也可以是电脑里面的文件。

还可以在哪?

还可以在外部设备,比如U盘,或者是网络上的某个位置。

因为我们这个CM不考虑加密狗和网络验证,所以这个记录就存放在我们的电脑里。

明白了这种类型的软件必须要有一个使用次数的记录就可以了。

我们继续。

我们把CM拖到OD里,先进行字符串搜索。见下图:




为了让大家看的清楚,我没有对敏感字符串加密,所以你现在可以看到一切需要的东西。

看红色箭头指的地方,写着HKEY_LOCAL_MACHINE\SOFTWARE\CM0202”。

这个就是我们这个CM的使用次数存放的位置,是在注册表里。

项名称是CM0202,键名称是PassWord。

我们可以打开注册表看看,见下图:




明白了这类软件如何实现对使用次数进行识别的原理了吧。

你可以在这里把1改成5,呵呵,那就还剩下5次。

或者干脆把它改成999次,你可以试试?

除了直接改注册表里面的数据以外,我们用OD如何破解呢?

第一种方法可以搜索字符串,你刚才看到了很多敏感的字符串,你可以自己尝试一下进行破解,在此略过。

第二种方法可以对读注册表的API函数下断点,这种方法在以前关于重启验证的课程中也专门讲过,在此也略过。

不过要注意的是这个CM所用的读写注册表的API函数和以前讲的注册表重启验证有些区别,你试试看吧。

我个人的经验是你要多试几个API,看看哪个能用?

最保险的方法是你把RegOpenKeyA、RegOpenKeyExA这两个都下上。

RegCreatKeyA和RegCreatKeyExA与上两个函数相比除了可以打开注册项外还可以创建项。

第三种方法可以下易语言按钮事件断点,这种方法在上集也讲过,在此也略过。

第四种方法可以对写注册表的API函数下断点。

我个人推荐如果要使用关于注册表的API函数的话,就用这种方法。

有两个写注册表的函数,名称是RegSetValueA和RegSetValueExA。

用RegSetValueA断不下来,要用RegSetValueExA。

我们想一下,什么时候程序会调用写注册项这个函数?

就是当没有破解成功的时候,每次打开CM后会执行调用这个函数的某句代码,往注册项里写已经使用的次数。

我们只要跳过这句代码就可以一直保持5次,不再减少次数。

再深入思考下,如果我们输入了正确的账号和密码,登录以后,这个程序是不是也要往注册表里写成功的标志?

否则我们再重新打开软件的时候它怎么判断我们是正版用户?

所以,有一个办法,你对RegSetValueExA函数下所有的参考断点。见下图:




下所有参考断点的方法是在命令行输入BPX RegSetValueExA ,然后按回车键,就好了。

然后你可以到断点窗口看一下。见下图:




然后你F9运行程序。

如果能断下来的就是程序判断为非正版用户后,要写次数的代码。

如果断不了的就是当你输入正确的账号和密码,登录后才能执行的语句。

当我们把能断的给跳过去,不能断的让它执行,是不是就可以了呢?

大家可以自己测试一下。

好了,今天的课程就到这里。

补充一点:

这个CM当你找到真码登录后,你会发现在注册表里的键值是一个特殊的数字。

这个数字就是标明软件是否是正版的标志。

相信大家通过尝试一定能够找到这个标志。

这个标志同样也代表了你在破解之路上的阶段性成功!

课件我发到附件里,大家玩玩。
如果您觉得我发的内容确实对您有所帮助,请麻烦您支持一个热心值,进行精神鼓励,也是我继续写下去的动力!

玩玩破解,写给新人看(第一集)
玩玩破解,写给新人看(第二集)
玩玩破解,写给新人看(第三集)
玩玩破解,写给新人看(第四集)
玩玩破解,写个新人看(第五集)
玩玩破解,写给新人看(第六集)
玩玩破解,写给新人看(第七集)
玩玩破解,写给新人看(第八集)
玩玩破解,写给新人看(第九集)
玩玩破解,写给新人看(第十集)
玩玩破解,写给新人看(第十一集)
玩玩破解,写给新人看(第十二集)
玩玩破解,写给新人看(阶段练习1)
玩玩破解,写给新人看(第十三集)
玩玩破解,写给新人看(第十四集)
玩玩破解,写给新人看(第十五集)
玩玩破解,写给新人看(第十六集)
玩玩破解,写给新人看(第十七集)
玩玩破解,写给新人看(第十八集)
玩玩破解,写给新人看(第十九集)
玩玩破解,写给新人看(第二十集)
玩玩破解,写给新人看(第二十一集)
玩玩破解,写给新人看(第二十二集)
玩玩破解,写给新人看(第二十三集)
玩玩破解,写给新人看(第二十四集)
闲谈如何破解软件?
玩玩破解——小白实战1,你也行!
玩玩破解——小白实战2,巧搜字符串
玩玩破解——小白实战3,易语言字符串比较通杀
玩玩破解——小白实战4,冰火两重天
对新人们学习《玩玩破解》系列教程的集中解答
玩玩破解—加点油,再前行!

CM_使用次数.rar

417.9 KB, 下载次数: 1693, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 92吾爱币 +79 热心值 +90 收起 理由
林伊轩 + 2 + 1 支持大佬!
Judas + 1 + 1 谢谢@Thanks!
某中二绅士 + 1 + 1 用心讨论,共获提升!
努力加载中 + 1 + 1 热心回复!
vooodooogooo + 1 + 1 谢谢@Thanks!
zheng0706 + 1 + 1 谢谢@Thanks!
roxulo + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jodon + 1 用心讨论,共获提升!
chengjinyuan + 1 + 1 用心讨论,共获提升!
suipian12138 + 1 谢谢@Thanks!
pojie_dd + 1 + 1 热心回复!
_归途 + 1 + 1 用心讨论,共获提升!
爱笑的眼 + 1 + 1 谢谢@Thanks!
Suaver + 1 + 1 谢谢@Thanks!
papi + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
tian19970206 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
heike2012 + 1 谢谢@Thanks!
#sky# + 1 + 1 谢谢@Thanks!
guozengyi + 1 + 1 我很赞同!
ukonw3477 + 2 + 1 谢谢@Thanks!
zhuzhuwa + 1 我很赞同!
zhoujinming + 1 + 1 用心讨论,共获提升!
朔子哥哥 + 1 + 1 用心讨论,共获提升!
Aiwanwan + 1 + 1 继续顶一个!
Mr.Y.H + 1 + 1 谢谢 @Thanks!
751811164 + 1 + 1 谢谢@Thanks!
Shervict + 1 + 1 谢谢@Thanks!
zzj9992002 + 1 + 1 谢谢@Thanks!
zohoqo + 1 + 1 用心讨论,共获提升!
zgsdjnxf + 1 鼓励转贴优秀软件安全工具和文档!
wutao6 + 1 + 1 谢谢@Thanks!
混元灵通 + 1 + 1 说实话,能免费更新都如此之多且如此详细,真是非常难得,感谢
wenha2010 + 1 + 1 谢谢@Thanks!
sslmzc + 1 + 1 大佬牛逼
虾真皮 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
diaog + 1 谢谢@Thanks!
星海月明 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
qixuan1989 + 1 + 1 谢谢@Thanks!
JetJerry + 1 + 1 我很赞同!
淡灬看夏丶恋雨 + 1 + 1 我很赞同!
行酒令 + 1 + 1 谢谢@Thanks!
qqboa + 1 + 1 谢谢@Thanks!
hdivy_ + 1 用心讨论,共获提升!
wgc3306 + 1 + 1 用户名5211314,密码eijop25,对吧^_^
wuboxun + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
KingXL + 1 热心回复!
fengbolee + 1 + 1 用心讨论,共获提升!
ljj_1025 + 1 + 1 谢谢@Thanks!
xgs14569 + 1 + 1 热心回复!
Zz7758885 + 1 用心讨论,共获提升!
yzmb8456 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
不畏将来 + 1 + 1 热心回复!
杨辣子 + 1 + 1 学习到了
雾满拦江 + 2 + 1 用心讨论,共获提升!
dbmk + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xiejunwei666 + 1 + 1 用心讨论,共获提升!
iraenoch + 1 + 1 我很赞同!
lqpb82 + 1 + 1 我很赞同!
bailemenmlbj + 1 + 1 谢谢@Thanks!
0adsl + 1 + 1 谢谢@Thanks!
mtlx + 1 用心讨论,共获提升!
diku + 1 谢谢@Thanks!
我是神的亲戚 + 1 + 1 我很赞同!
893902856 + 1 热心回复!
小tg + 1 + 1 热心回复!
手别颤抖 + 1 + 1 谢谢@Thanks!
Alvin/G + 1 + 1 鼓励转贴优秀软件安全工具和文档!
caleb110 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
笙若 + 1 + 1 谢谢@Thanks!
途牛i + 1 谢谢发哥
卡卡loveTS + 1 + 1 谢谢@Thanks!
khadwf + 1 + 1 谢谢@Thanks!
金霸王超霸 + 1 + 1 谢谢@Thanks!
Xaedon + 1 真棒!潜水了一年动物新用户终于学到知识了
lou7878 + 1 + 1 热心回复!
woyucheng + 1 + 1 谢谢@Thanks!
借我一支黑兰州 + 1 + 1 谢谢@Thanks!
一剑飘零 + 1 + 1 讲的通俗易懂,一下子就能明白。好讲师。
whitewin + 1 用心讨论,共获提升!
FrozenW + 1 + 1 谢谢@Thanks!
tuo哥哥 + 1 + 1 热心回复!
grrr_zhao + 1 + 1 谢谢@Thanks!
完蛋先生 + 1 + 1 热心回复!
theStyx + 2 + 1 谢谢@Thanks!
为之奈何? + 1 + 1 我很赞同!
lho + 1 谢谢@Thanks!
lizhengpu + 1 + 1 热心回复!
遛娃追狗看夕阳 + 1 + 1 谢谢@Thanks!
wangdanq + 1 + 1 谢谢@Thanks!
遛你玩528 + 1 + 1 感谢分享思路
YMYS + 1 + 1 用心讨论,共获提升!
冷凯 + 1 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

本帖被以下淘专辑推荐:

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

推荐
Pierce 发表于 2021-2-15 17:44
先载入OD运行F9跑起来
Ctrl+B查找FF 55 FC 5F 5E 按钮call,F2下断
随便输入账号密码登录,断下来了,F2取消掉断点,回车进去call里
至此已经找到登录call了.

004036BC  /.  55            push ebp 登录call头部
F2下断,F9跑1下,断下来了,开始F8跟进
一直追到retn之前, 按 “-” 回溯
找到以下跳转, nop掉或者jne,复制可执行文件,保存ojbk






下面来追码 一直在登录call里找
先F8追了下,发现怀疑字符 1314 ,5211314
1314填入,登录,没有什么发现。
5211314填入,登录,一直F8到以下



发现寄存器字符 eijop25
F9跑起来,填入密码 eijop25
登录。噢了
推荐
1113519447 发表于 2021-2-11 11:00
交作业,未注册代码中直接调已注册代码段,call
推荐
流光 发表于 2021-10-25 12:57
首先字符串 搜索 成功的地址

可以看到  
成功的地址的段头为004035B0
.

那么 我们整理思路  是什么情况下  会call 或者jmp这段成功地址头,肯定就是关键地址所在了
按照 这个思路 去搜索命令
call 004035B0
先返回程序头00401000
CTRL + F  搜索  call 004035B0

CTRL +L 继续搜索

一共找到2个地方    然后按钮事件下断 ,就可以调试了
经测试  两次地址 分别为 程序 加载后 自动 成功破解  , 和按钮点击后 提示成功,具体需求,各位同学自己去改

推荐
helc 发表于 2021-12-15 16:39
CM_使用次数.exe
对于这个作业我看了下评论区的答案和楼主写的,对它有了新的思路。
要破解它,答案在评论区写的很清楚了,但我要做的不是破解它,而是去除使用次数的限制。
1.od载入,来到401000处,搜索字符串“未注册”,进入那个“未注册版本”的代码区。
0040344D     /E9 5A010000   jmp CM_使用?004035AC
找到这行,它能跳过。这一行的下一行恰好有个跳转来源。
00403342     /0F85 0A010000 jnz CM_使用?00403452
这个jnz是实现的,可以下断点看。
一开始以为nop掉它,就能成功了,却发现会来到“没有机会”的界面,显然不对。
2.思考新的思路,首先我只看到jmp和jnz这两个跳转,应该就是关键处,只能改它们。
但无论是nop它们,还是交叉组合,都不行。
最后发现还有一种组合没尝试,那就是都实现,可jnz是跳到jmp下面的。
那就改jnz直接跳到jmp,保存出去。
3.惊喜发现,程序没有“使用次数”的提示了。关闭n次,也能继续输入。那应该算是去除使用次数限制了吧。后面的就是追码或者爆破了。

总结:新思路:直接去除使用次数限制
推荐
zhengyw6 发表于 2021-8-27 17:07
第一步、在RegSetValueExA下断点。返回主进程后,再返回上一层函数,nop掉409411处的这个函数,就不再会写入运行次数了。
第二步、下按钮断点。从该过程后面往前找,发现密码错误跳过的程序段有注册表访问,猜测此处为关键代码,将403875处代码nop,转入该代码段即可破解。

使用次数.png (138 KB, 下载次数: 0)

使用次数.png
推荐
幽溪左畔 发表于 2021-2-8 09:09
YMYS 发表于 2021-2-7 22:48
请问大佬您是怎么找到关键call的呢

RegSetValueExA下断 返回5层

00401B91     /0F85 0A000000 jnz CM_使用?00401BA1
00401B97  |. |E8 5B170000   call CM_使用?004032F7
00401B9C     |E9 05000000   jmp CM_使用?00401BA6
00401BA1  |> \E8 0A1A0000   call CM_使用?004035B0

推荐
PrincessSnow 发表于 2021-2-6 01:06
谢谢大佬 谢谢老师
沙发
冷凯 发表于 2021-2-5 22:46
高产啊大佬   
3#
YMYS 发表于 2021-2-5 22:55
来了来了学习了
4#
mili 发表于 2021-2-5 22:55
老师高产啊,同学们上课了
5#
wangdanq 发表于 2021-2-5 23:05
谢谢分享 来学习了
6#
xuhw 发表于 2021-2-5 23:43
我一定要好好的练练这武功秘笈,在逆向领域让自己能更上一层楼,感谢大大~
7#
shc1221 发表于 2021-2-5 23:49
感谢大佬辛苦付出
8#
lho 发表于 2021-2-6 00:09
谢谢分享 来学习了
9#
theStyx 发表于 2021-2-6 00:31
感谢大佬分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-21 21:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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