楼主很水,是个小菜鸡,大神轻点喷。
起因
逛论坛发现热门区有个叫火柴的搜索软件,发现不是很好用。后面又在该贴的评论区发现个有人推荐Listary,在论坛搜了下发现也有,便下载来试用下。
下载安装后发现有Pro版本,虽然Pro的功能用不上,但本着我不用但我不能没有的心理,还是想搞一个。
虽然也能搜到注册码,但自己动手更有成就感不是么?
正文
打开输入注册码的界面,发现需要邮箱和注册码,其中注册码需要6行
------------无效试验开始------------
(首先说一下,楼主只会用x64dbg搜索相关字符串然后在相关字符串出打断点然后调试,其他方法不会。)
于是便上x64dbg,附加进程。
附加后发现进程是反汇编区是win32u.dll,这很明显是个系统自带的dll。
在日志区点击Listary.exe进程入口发现是在内存区,于是便在内存区右键转到反汇编区,再在反汇编区右键搜索字符串“pro”、“activate”、“register”,都没有搜到,也没有类似的字符串。
到这里本来想放弃了,觉得这个软件并不是我这个水平的能够破的。
------------无效试验结束------------
柳暗花明,打开安装目录,发现一些exe和dll文件后面都会额外存在一个.exe.config或.dll.config的文件。这不就是C#编译的么?
C#反编译dnSpy安排上!
把exe拖进dnSpy,展开,很明显发现两个带有pro的命名空间“Listary.Core.Pro”和“Listary.Main.Pro”,展开看看
QQ截图20230513230548.png (140.67 KB, 下载次数: 0)
下载附件
2023-5-13 23:05 上传
从类名看,LicenseChecker=检查许可证,这个类最符合分析
点开,应该就是它了。先打上断点。
QQ截图20230513231153.png (344.12 KB, 下载次数: 0)
下载附件
2023-5-13 23:12 上传
方法的前面几行,是邮箱和注册码的非空判断,和注册码的192位长度判断。
方法的后面几行,是通过Email生成一个字符串text,并判断输入的注册码第161-173位是否等于生成的字符串text。
所以我们有理由相信,192位的注册码,有用的只有第161-173位字符串。
那就先随便输入个邮箱和192位长度的注册码试一下。
启动调试(启动时也会校验注册码,我们先跳过),打开注册窗口,输入-点击激活
QQ截图20230513231914.png (49.86 KB, 下载次数: 0)
下载附件
2023-5-14 00:13 上传
如我所料,进入了断点。中间通过email生成字符串的代码我也看不懂,直跳调到return处看看text的值,发现是"22222EA22225"
QQ截图20230513233217.png (335.47 KB, 下载次数: 0)
下载附件
2023-5-13 23:37 上传
于是我把我随便生成的注册码,第161-173位换成"22222EA22225",再次点击激活。
QQ截图20230513234626.png (58.42 KB, 下载次数: 0)
下载附件
2023-5-13 23:46 上传
QQ截图20230513234319.png (48.5 KB, 下载次数: 0)
下载附件
2023-5-13 23:43 上传
发现它成功了激活了!!!它成功了激活了!!!
后记
这个方法虽然对大神们来说挺简单,但对菜鸡楼主来说还是很有意义的,故想记录一下。
本来还想写个注册机的,发现看不懂加密方法(楼主很水),大概就是会从AppDomain.CurrentDomain里GetDate,但是SetData是啥完全看不懂,期待大神吧。
最后,楼主真的是个小菜鸡,大神轻点喷。