.Net零基础逆向教程 第二课(获得注册码)

逆向教程 3个月前 mimosa
645 0 0

有了第一课的基础,大家是不是想试试身手,那么我们就来试试身手吧!

这一课,我们要利用第一课的知识,来获得一个软件的注册码!

这个软件,是根据 Shark 恒在他的第二课中提供的软件,画了五分钟速仿的……所以千万别计较功能啊啥的为什么不能用。

软件是一个"IP搜索工具",有注册功能,我们就来拿这个软件获得注册码!

注:同样是初级软件,不涉及干扰新手学习的各种元素

下面是注册界面的截图

.Net零基础逆向教程 第二课(获得注册码)

注册后,就有提示出来了,暂且不管他提示的是什么,我们也知道要干什么了,对吗?

.Net零基础逆向教程 第二课(获得注册码)

好,dnSpy 载入程序,同样是按照第一课的步骤,搜索 Name/ ,多了一个斜杠,是因为搜索 Name 结果太多,当然你也可以搜索 Name/Code ,但其实我并不很建议这么做,因为其中可能包含有我们肉眼无法分别的空格从而导致你错过了正确的搜索结果。

很容易,第二个就找到了刚才提示的字符串,我们双击它!

.Net零基础逆向教程 第二课(获得注册码)

判断依据其实很简单,看我框出来的右半部分,它代表着这个字符串来自于哪个文件,很明显三个结果里只有第二个是来自我们的课件。

当然你也可以将过滤规则从所有文件调整为所选文件,但我同样不建议新手这样,因为字符串可能包含在某个 dll 里。

双击后我们同样按照第一课的步骤找到了相关判断,如果要爆破的话,直接修改 34行 的判断即可。

但是今天我们不爆破,玩的是找出注册码 。

我们阅读一下这个注册的判断逻辑:

.Net零基础逆向教程 第二课(获得注册码)

22行,第一个编辑框的内容,先删除首尾空格,然后经过RSAEncrypt()函数加密后的内容被赋值给了变量text

23行,第二个编辑框的内容,先删除首尾空格,然后赋值给了变量text2

24-33行,判断了text和text2的内容是否为空,是的话就弹窗报错

34-41行,判断text和text2是否相等,相等就证明激活码正确,则将主界面的标题添加上Registered字样,不相等就弹窗报错

所以这个程序里你要爆破的话,如果想不填两个编辑框就直接激活成功,则你可以把 24-33行 的内容删掉,然后修改 34行 的判断条件,也可以直接清空 22-41行 的内容,只保留 36-37行 内容,这样就可以实现点击主程序上的Register按钮时直接完成激活。

尝试着理解我这几句话,然后自己进行练习,如果有问题请在知识星球向我提问。

那么从代码中我们了解了text和text2要进行对比,也就是说当我们在第二个编辑框填写的内容,是第一个编辑框通过RSAEncrypt()函数加密后的内容时,就能完成注册。

在 23行,右键,添加断点,你也可以把断点理解成是"暂停",即告诉dnSpy,当程序运行到这里的时候(此时,尚未执行被标记的行),暂停下来。

点击启动来运行程序,注册窗口在:File--->Register

.Net零基础逆向教程 第二课(获得注册码)

现在输入注册信息(用户名记住,注册码随便写),点击注册。

.Net零基础逆向教程 第二课(获得注册码)

你会发现程序失去了响应,我们在 dnSpy 中下的断点前的红点,中间多出了黄色高亮标记,这代表着软件已经执行到了这里。

回到 dnSpy,注意下方的局部变量窗口里,有 text 和 text2 两个变量

.Net零基础逆向教程 第二课(获得注册码)

按一下 F10 看看

.Net零基础逆向教程 第二课(获得注册码)

我们发现 text 被赋值了,没错,这个值就是注册码!

在 text 的值上右键,复制值

然后在下断点的代码前面点一下小红点,让这个断点取消。

.Net零基础逆向教程 第二课(获得注册码)

点击继续,或者按下 F5 让被我们下断点的程序继续运行

还是会弹出个报错~无所谓

将我们复制的值粘贴到第二个编辑框去

注册~然后你会被打脸……

.Net零基础逆向教程 第二课(获得注册码)

哪里出了问题呢?

dnSpy 在复制文本型值的时候,会自动添加一对引号,所以我们将复制的值粘贴到第二个编辑框后,自己动手把引号删除即可。

.Net零基础逆向教程 第二课(获得注册码)

软件变成了已经注册的状态。

恭喜你,通过第一课和第二课,你已经学会了爆破和获得注册码!

最后补充解释下 F10 的作用:

.Net零基础逆向教程 第二课(获得注册码)

上图其中的按钮依次为:

继续:继续运行程序除非遇到下一个断点或者下一个操作等待

暂停:暂停到断点处或者操作等待处

停止:结束运行程序

重新开始:重新运行程序到断点或者操作等待

显示下一语句:用来预览下一次将要执行的语句

逐语句:每次执行一行语句,如果碰到函数调用,它就会进入到函数里面

逐过程:每次执行一行语句,碰到函数时,不进入函数,把函数调用当成一条语句执行

跳出:当你进入到函数内,跳出可以让你直接执行函数内剩余的语句,直到返回到该函数被调用时的后面的语句处

搜索程序集:上一节课我们刚学过~

引用 Shark 恒的一段话:

通常教程上来都是一大堆的理论与基础知识,让新手直接关了视频或者网页。这不是我的教程魅力,我的教程是让新手快速获得兴趣,这样新手们才有机会学习理论与基础知识。
只要有了兴趣,其他的都好说,到时候不用你说,他也自己去学理论与基础知识了。没有兴趣的话,在牛逼的理论与基础知识都是催眠曲。

课件下载:

关注微信公众号:大学生的电脑课
回复关键词:.NET零基础逆向
版权声明:mimosa 发表于 2022年2月20日 下午6:14。
转载请注明:.Net零基础逆向教程 第二课(获得注册码) | 软件爱好者

相关文章

暂无评论

暂无评论...