吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3699|回复: 20
收起左侧

[.NET逆向] .NET删除验证与破解通讯协议

[复制链接]
TES286 发表于 2021-7-24 18:05
本帖最后由 TES286 于 2021-7-28 20:34 编辑

最近发现了一个程序, .net编写, 存在网络验证, 于是一时兴起, 想破解一下

0x01 查壳,脱壳

img1

img1


跑一边de4net

img2

img2


再次查壳

img3

img3


完美

0x02 反编译

拖入dnspy后

1K73uXsjMvCNFJr.png

注意:要使用对应架构的程序版本调试(例如这个是x86的程序,就只能用x86的dnspy)

看到这里有一个版本验证,直接删掉

Ux897tCuNQGwoVj.png

OrlsQoMbGpzFj6H.png

0x03 分析

由于程序可信任,则直接调试运行

当然,如果是个不可信任的程序,就不能这样随意,至少得在虚拟机中运行

一步步单步执行,过程就不放了,有兴趣可以找一个样品试试

分别是最大启动,使用启动,最大地址

zxTFjda258Nqw6y.png

授权码生成

uI3AG87ltEz4XDV.png

(这授权码生成的也太草率了吧...)

所以我们的思路是将已使用启动数量设置为0

跟进

4TazFMWDBJA16nt.png

额, get;set;什么玩意,c#里还有这么高深的语句...

查下官方文档https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/get

VxgWFzXiJrvKRcn.png

(虽然我可能没有评价这文档的能力,但我个人认为上面那句描述简直不是人话)

结合这里的实际,肯定还有一个地方为其赋值,搜索usedsetup

Ywc3jBWasMe6ilN.png
发现都是在这个文件里,没有任何有价值信息

没办法,分析,找到ns0.FormSetup.method_0中存在使用

P4FDHtfs681hLTn.png

可以猜测图中红框函数(MySoft.smethod_9)为网络访问,先放哪,一会分析

另外还有个ns0.FormSetup.methob_5

ZOKYvxRI6dT7rMC.png

直接改usedsetup为0(已使用启动数量)

此处算是成功

NTWch8CZsUwartB.png

0x04 通讯协议

记得前面的method_0吗,这是一个网络请求函数



很明显,网络请求是在MySoft.smethod_9中

其中MySoft.softlocal.apiurl

MriGdoEcAte1zFR.png

smethod_9的代码,敏感部分已使用xxx代替

[C#] 纯文本查看 复制代码
public static string smethod_9(string string_7, string string_8)
                {
                        string mycomputerhash = MySoft.mycomputerhash;
                        Config.debugprint("同步xxxPost请求 " + string_7);
                        NewWebClient newWebClient = new NewWebClient(10000);  //初始化网络请求
                        newWebClient.Headers.Add("sn", mycomputerhash); //计算机哈希
                        newWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                        string text = "";
                        try
                        {
                                text = newWebClient.UploadString(string_7, "POST", string_8); //上传字符串, 详见https://docs.microsoft.com/zh-cn/dotnet/api/system.net.webclient.uploadstring#System_Net_WebClient_UploadString_System_String_System_String_System_String_
                                text = AESHelper.Decrypt(text); //顾名思义,解密函数
                        }
                        catch
                        {
                                Config.debugprint("同步xxxpost请求发生错误 " + string_7);
                        }
                        return text;
                }


这个函数告诉我们请求由HTTP完成,并且存在加密

而且,按照习惯,服务端加密和本地加密应该是一致的,所以找到解密函数后就可以双方解密(还有的应用就不是这样,当然也是极少数)

解密函数

dXsrIMz4DalKuTJ.png

其中AESHelper.key是6x57chhbkg9rsI2mua6PcGMZB4FLSJJt    AESHelper.iv是WW1RFPd9htGQ46Qb

1Nrw8597kPdlRqW.png

tqCmAv8IPu2K4kW.png

可以得知这是由cbc加密,并且密文以base64传输,填充

所以我们直接把代码抠出来,结果:

RIPexV4gNym5bkh.png

当然,同文件的加密函数也不能忘掉

ESMUOR1AIChjXZQ.png

可以正常运行

那么,我们就可以把这里对接到外界自己的程序中,实现肆无忌惮的修改数据了

其他

文章中使用到的一些资源:

dnspy :https://down.52pojie.cn/Tools/NET/dnSpy.zip
de4dot :https://down.52pojie.cn/Tools/NET/de4dot.zip
exepeinfo :https://down.52pojie.cn/Tools/PEtools/ExeinfoPe.zip
微软的C#文档 :https://docs.microsoft.com/zh-cn/dotnet/

另外,一般不要因为程序的编写语言自己不会就望而却步,比如我,在之前看都没看过c#,但依旧完成了这个逆向过程

第一次玩破解,肯定有很多疏忽与漏洞,还请各位大佬指出,有好的想法,也欢迎提出

论坛不然放成品,就不放了

免费评分

参与人数 6威望 +1 吾爱币 +25 热心值 +3 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
t171 + 1 谢谢@Thanks!
22wsx + 1 谢谢@Thanks!
bjxiaoyao + 2 + 1 谢谢@Thanks!
小猫猫 + 1 建议把图床的图片移到吾爱上,防止丢失
1100111000 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| TES286 发表于 2021-7-26 16:23
yasenhacker 发表于 2021-7-26 11:25
你运气真好,程序用smart assembly 6.xx加密,如果用smart assembly 8.xx加密的话,de4dot也脱不了。你有没 ...

没有,论坛上也没找到什么挺好的方法,就无脑跑了一遍de4net(话说直接导入也可以带壳反编译,只不过有些地方可读性太差)
 楼主| TES286 发表于 2021-7-28 20:39
Hmily 发表于 2021-7-28 18:00
@TES286 图片为什么不上传论坛本地啊,你这个图床好卡啊。

已改,谢谢提醒

(提个建议,论坛上传图片能否加入直接从剪贴板粘贴,要不然还有先存在本地在上传,有些不方便,所以这里之前使用第三方图床)

点评

暂不支持了,这样远程附件下载会有安全问题。  详情 回复 发表于 2021-7-29 10:25
stevejobs111 发表于 2021-7-25 18:28
Tamluo 发表于 2021-7-25 20:12

这个给力哈,楼主牛啊
xixicoco 发表于 2021-7-26 01:19
不错,这么干的,牛逼
bjxiaoyao 发表于 2021-7-26 01:55
内容精彩,感谢分享。
t171 发表于 2021-7-26 08:45
这个看起来好厉害啊,学起来
头像被屏蔽
Wits 发表于 2021-7-26 09:32
提示: 作者被禁止或删除 内容自动屏蔽
yasenhacker 发表于 2021-7-26 11:25
你运气真好,程序用smart assembly 6.xx加密,如果用smart assembly 8.xx加密的话,de4dot也脱不了。你有没有对smart assembly8.xx有过研究???主要是脱壳
Tamluo 发表于 2021-7-26 18:25
不明觉厉。希望以后会接触到,学习到
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 19:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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