吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1699|回复: 11
收起左侧

[讨论] .Net注册码迷宫

[复制链接]
johnick 发表于 2021-7-18 23:54
本帖最后由 johnick 于 2021-7-19 13:06 编辑

在尝试研究一款商业软件,未加壳,也无混淆(谢大伙纠正,注册部分有混淆),本以为很轻松,谁知。。。先上图吧



静态分析:
其他所有的函数都命名正常清晰,维度涉及注册码的部分,由小写a()和大写A()类封装,其中子方法、子函数、子属性的命名,也是a-zA-Z,然后再是子子,子子孙孙无穷尽也。。。
这个层数超过了人工识别追踪的限度。

这样一来,静态分析的路被堵死了。

动态分析:
其次,它是一个全局变量,比如其中一个子项,调用时写作global::A.d.D(),(当然D里面的实现,又用到了d.A().K(),AK分别又链到别的)
这就带来了一个问题,我搜遍全网也没找到如何让dnspy查看全局变量(global),调试时下方窗口也只有局部变量列表。

动态分析也无从下手。

不知道如何继续下去了。。。这种迷宫调用(自己命名的,不知道有没有官方叫法)真的有点厉害,暂时没有头绪了。

注册码相关函数

注册码相关函数

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

lml0126 发表于 2021-7-19 12:37
学会了,从入门到放弃
 楼主| johnick 发表于 2021-7-19 11:28
本帖最后由 johnick 于 2021-7-19 13:00 编辑

细说一下吧,多图预警。
比如说,下面是个关键跳转:



我刚开始想的是,把这个跳转IL掉,不就好了吗。后来才发现,这个软件有十几个收费功能, 而且不同的注册权限,能用的功能还不一样。一个个修可能也行,但优雅的方法还是找到注册码对象的核心,把它改了。一方面也能逼自己学点东西。

接下来分析,smethod_11是什么,它由smethod_0和method_19组成:



smethod0调用了gclass3_0,是个变量。



而这个gclass3_0是GClass2底下的一个类变量。我也不知道图2在Gclass2里面调用自己的变量,会是个什么值。。。先不管这个吧。继续说别的

刚才还有个method19,这是个啥呢



它由method1、smethod1和method4、smethod4构成。



再看method1,返回一个单变量,



smethod1,由interface1_0的变量判断构成。后面这个date或许是到期时间吧。

2_7.png

看一下interface1_0是啥,也就是个存数据的类。





分析到这里,当然可以继续下去,但估计也就走了万里长征第一步,人工分析遇到了瓶颈。不知道我这个分析法对不对,有没有更好的思路或者工具之类的。
2_2.png
2_1.png
2_3.png
2_5.png
2_6.png
2_8.png
2_4.png
涛之雨 发表于 2021-7-19 00:00
这就像webpack打包的吧。。。
混淆改调用

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
johnick + 1 + 1 热心回复!

查看全部评分

SoftCracker 发表于 2021-7-19 00:15
> 未加壳,也无混淆
这不叫混淆,这叫什么?
gagmeng 发表于 2021-7-19 08:50
这混淆得连作者老妈都不认识了吧
zhanglei1371 发表于 2021-7-19 09:22
并非所有的混淆都是变成乱码,这,就是混淆!
 楼主| johnick 发表于 2021-7-19 10:03
谢谢大家的热心回复,原来这种也叫混淆。

它只混了注册码部分的调用。补充一下,最外层除了a()和A(),也有bcdBCE等,内层更多。

和大家汇报一下,我试了,直接拖de4dot没用,可能单字母也是合法字符,用正则筛选,可以了。

然鹅。。。上图

25个爷爷命名空间,329个儿子类,1000多孙子类。。。de4dot相当于帮忙去除了同名同姓,对于静态分析的帮助,还是比较有限。

对于这样的核心代码结构,不知道有没有好的下手思路。



1.png
2.png
 楼主| johnick 发表于 2021-7-19 13:47
似乎追到了它的某个重要变量:gclass3_0的赋值,位于smethod_1()内

3_1.png

而这个赋值smethod_1()的调用,是在一个叫LoadAsync()的函数内。顾名思义,这应该是一个异步函数。。。

3_2.png


瞬间懵逼了,这函数里面也没显式调用smethod_1()啊,这该怎么追下去呢,如何知道哪个实参被传给了smethod_1()呢?
 楼主| johnick 发表于 2021-7-20 08:19
发现了一个问题,dnspy对async的支持是不行的,换ilspy,这一段LoadAsync函数可以正常显示了
4_1.png


那么随之而来一个问题:
ilspy是无法调试的。
dnspy可以调试,但代码无法正确显示,也就是说,上面这段在dnspy调试时都整合在下面最后一句return里,一撸而过。

4_2.png

无法动态调试,也就无法看这个关键的gClass变量的示例值,更无从对其更改。。。

目前就卡在这里了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-16 17:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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