首页
论坛
课程
招聘
[分享]自己修改的de4dot专克MaxtoCode
2018-10-26 11:12 11076

[分享]自己修改的de4dot专克MaxtoCode

2018-10-26 11:12
11076
大牛们好!

玩.NET逆向的想必都对de4dot有所了解吧。我在de4dot官方源码的基础上潜心研发,终于做出了自己的修改版。(感谢原作者0xd4d)

这个修改版最大的特点,就是增加了对MaxtoCode 3.80-3.87版的支持。已经可以还原字符串和资源,并且可以反混淆除WinForm之外的控制流。

原版的de4dot虽然好,但是对于新版的MaxtoCode支持不足。再次说明了,国外的月亮虽然圆,但还是要我们中国人自己动手,才能丰衣足食。

下载地址:见附件
源码:https://github.com/Tianjiao/de4dot/
温馨提示:源码托管于美国GitHub服务器。

小窍门:如果在使用de4dot的过程中碰到如下错误,只需连续按“忽略”按钮15次,或者在命令行中使用"--dont-rename"选项。


看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

最后于 2018-10-26 11:16 被Mr Julius编辑 ,原因: 话题修正为[分享]
上传的附件:
收藏
点赞1
打赏
分享
最新回复 (16)
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-10-30 21:16
2
0
通知:从MaxtoCode的3.87版以来,似乎MC在每次执行加密的过程中都会更换McKey8C0h密钥。这些密钥都是正确的,只不过每个样本都不同。

因此任何已编译的版本对新版MC都是无效的。我已经开放了密钥的计算源码,用户只能先从Logger.vv()方法中读取样本的密钥,把该密钥写回源码,再重新编译。

如果您对我针对MaxtoCode的de4dot修改版感兴趣的话,您可以关注我在GitHub上的项目更新。网址:https://github.com/Tianjiao/de4dot
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-11-9 16:18
3
0
用WinHex打开被我修改的de4dot解密后的程序,上效果:


雪    币: 189
活跃值: 活跃值 (536)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xingbing 活跃值 2018-11-15 13:44
4
0
ERROR:
ERROR:
ERROR: Hmmmm... something didn't work. Try the latest version.

脱壳还是出现这个问题,不知道是什么问题。谢谢。

最后于 2018-11-15 13:44 被xingbing编辑 ,原因:
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-11-17 08:33
5
0
突破:我编写了GuessXorKey()方法,可以在GitHub查看commit。
MaxtoCode在加密用户字符串时,也使用了异或密码。我使用了穷举法进行破译。如果使用“字符串匹配”选项,速度可以进一步提升。
现在可以自豪的宣布,对于MaxtoCode可预见的更新,修改版de4dot完全支持用户字符串解密
commit详见:https://github.com/Tianjiao/de4dot/commit/e9b53c2f318b6793902913ae18c6bbe61a2e2eb0


雪    币: 8737
活跃值: 活跃值 (965)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tomtory 活跃值 2018-11-17 10:07
6
0
支持,试用一下
雪    币: 167
活跃值: 活跃值 (264)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
nig 活跃值 4 2018-11-18 07:25
7
0
谢谢,一定要进行支持一下。
雪    币: 143
活跃值: 活跃值 (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
虫子樱桃 活跃值 2018-11-18 17:58
8
0
看楼主还写过AU3,同道中人啊
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-11-18 21:04
9
0
共勉共勉,当时用AU3主要是写Windows下的自动化脚本,也算是练练功底吧。
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-12-1 17:12
10
0
编译技术不熟练的同学有福了!
我编写了release.bat编译脚本,可以自动解决NuGet包的依赖项,大大降低了编译的门槛,提高了编译的效率,减少了出错的可能性。

de4dotNuGet依赖项是非常多的,这款脚本可以说是一大神器,方便软件编译的小白使用。
双击编译不再是梦!

脚本详见:
https://github.com/Tianjiao/de4dot/blob/master/release.bat

温馨提示:本脚本依赖于NuGet命令行工具和zip命令行。
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-12-4 20:17
11
0
我编写了编译脚本,可以在Linux系统上编译de4dot
de4dot官方上游增加了对.NET Core的支持,而.NET Core可以在Linux系统上进行交叉编译。
编译脚本详见:https://github.com/Tianjiao/de4dot/tree/master/Build
最后于 2018-12-4 20:18 被Mr Julius编辑 ,原因: 修复链接
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-12-7 20:47
12
0
增加了用于安装.NET Core SDK的PowerShell/Bash脚本。

de4dot分支的关于.NET目标框架的更新:

  • 已支持.NET标准2.0
  • .NET Core更新到2.2版
  • .NET框架更新到4.7.2版
雪    币: 1170
活跃值: 活跃值 (880)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
Tennn 活跃值 5 2018-12-8 17:47
13
0
支持一个
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-12-17 18:41
14
0
更新:
  • 增加了自动编译系统cake-build(C# Make)。
  • 配置了GitHub机器人。
  • 增加了持续集成(CI)服务。

To-Do:
  • 修复微软Roslyn代码分析器报告的警告。
雪    币: 13650
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr Julius 活跃值 2018-12-31 18:06
15
0
 混淆器 编码 使用的算法
  Agile.NET   CA5351   DES
  CodeWall   CA5351   MD5
  CryptoObfuscator   CA5351   DES
  SmartAssembly   CA5351   DES
  MPRESS   CA5350   SHA1
  ILProtector   CA5351   MD5

这是警告列表。
这份列表是由微软的NetCore分析器报告的。它指出了每种混淆器所使用的损坏的算法。在你选择混淆器之前或许可以先看看这些警告。

更新:
  • 修复.NET框架兼容模式
  • 增加Azure Pipelines持续集成
  • 修复Roslyn代码分析器进行中
雪    币: 170
活跃值: 活跃值 (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
doufan 活跃值 2019-3-27 14:05
16
0
运行一直报错,按了15次忽略也不行
雪    币: 249
活跃值: 活跃值 (21)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
lofullen 活跃值 2019-7-11 01:01
17
0
我测试了下,只有3.77的能解,其他都是 WARNING: Ignore ApplicationException, Could not decrypt methods
这几个样本加密版本都是相同的 EncryptionVersion.V8,相同的Rva900h和McKey8C0h
以下是样本:
57C649CB = Wed, 31 Aug 2016 03:06:51 / V 3.83 完全无解
5766EE37 = Sun, 19 Jun 2016 19:10:47 / V 3.82 完全无解
5655BF0E = Wed, 25 Nov 2015 14:00:46 / V 3.81 接近无解 执行几次 GetBlowfishKey
55043264 = Sat, 14 Mar 2015 13:06:44 / V 3.79 sp1  接近无解 执行几次 GetBlowfishKey
531729C4 = Wed, 05 Mar 2014 13:42:28 / V 3.77 可解
按照你的说法,387以后才每次生成样本是更换密钥,但似乎哪里有问题,还是算必须根据不同样本编写不同的解密算法?

case EncryptionVersion.V8:

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt4_v6, Decrypt2_v2, Decrypt3_v6, Decrypt1_v6, Decrypt6, Decrypt8_v6, Decrypt9_v6, Decrypt7, Decrypt10, Decrypt5 }, new uint[] { 0x5166DB4F, 0x51927495 }));

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt4_v7, Decrypt2_v2, Decrypt3_v6, Decrypt1_v7, Decrypt6, Decrypt8_v7, Decrypt9_v7, Decrypt7, Decrypt5 }, new uint[] { 0x51413D68 }));

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt4_v7, Decrypt2_v2, Decrypt3_v6, Decrypt1_v7, Decrypt6, Decrypt8_v8, Decrypt9_v8, Decrypt7, Decrypt5 }, new uint[] { 0x513D7124, 0x51413BD8 }));

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt4_v5, Decrypt2_v2, Decrypt3_v6, Decrypt1_v9, Decrypt6, Decrypt8_v8, Decrypt9_v9, Decrypt7, Decrypt5 }, new uint[] { 0x513D4492, 0x5113E277 }));

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt3_v6, Decrypt2_v2, Decrypt4_v8, Decrypt1_v10, Decrypt8_v9, Decrypt9_v10, Decrypt6, Decrypt7, Decrypt5 }, new uint[] { 0x526BDD12 }));

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt1_v10, Decrypt4_v8, Decrypt2_v2, Decrypt3_v6, Decrypt6, Decrypt8_v9, Decrypt9_v10, Decrypt7, Decrypt5 }, new uint[] { 0x526BC020 }));

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt3_v7, Decrypt2_v6, Decrypt4_v9, Decrypt1_v11, Decrypt8_v10, Decrypt11_v1, Decrypt6, Decrypt7, Decrypt5 }, new uint[] { 0x5296E242, 0x52B3043C }));

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt4_v10, Decrypt1_v12, Decrypt3_v8, Decrypt2_v7, Decrypt6, Decrypt8_v11, Decrypt9_v11, Decrypt7, Decrypt5 }, new uint[] { 0x531729C4 }));   //  能解开的在这里有一致的样本

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt1_v13, Decrypt4_v11, Decrypt2_v8, Decrypt3_v9, Decrypt6, Decrypt8_v11, Decrypt9_v12, Decrypt7, Decrypt5 }, new uint[] { 0x52B2B2A3 }));

decrypters.Add(new Decrypter(new DecryptFunc[] { Decrypt2_v9, Decrypt3_v10, Decrypt1_v10, Decrypt4_v12, Decrypt8_v12, Decrypt9_v13, Decrypt6, Decrypt7, Decrypt5 }, new uint[] { 0x53172907 }));

break;



作者有没有学习 Maxtocode 解密算法的编写方法?
最后于 2019-7-11 01:04 被lofullen编辑 ,原因:
游客
登录 | 注册 方可回帖
返回