最终版 Reflector v1.0 (+简单的反流程混淆)

(0415增加简单的反流程混淆功能,满足日常使用需要,不再更新,转向ILSpy,见12点后面)

Reflector过期?这可不行!自己动手吧!

看雪上拿到Reflector 7.0的源码,根据自己需要稍作修改,自己编译,就这么简单!

为了便于使用,自己做了一些修改:

1,移除所有授权相关代码和资源

2,移除所有报告错误相关代码和资源

3,移除ReflectorInstaller相关代码和资源,大小由4.3M(混淆压缩)变成2.8M(未混淆压缩)

4,增加代码着色,原来只有黑色和深绿色,看起来要命。类名红色,方法名绿色,类字段浅黄色,参数浅绿色,本地变量黑色(若不喜欢自己修改代码)

5,改善if语句,只有一个语句时不换行,不加大括号,增加代码可读性。下图第一行

6,改善表达式圆括号。原来为了严禁,几乎每一个子表达式外面都套一层圆括号,如果一个条件表达式有多个子表达式组成,最后将会看到非常多的圆括号。这里引入运算符优先级,不需要的时候不加圆括号

7,人工对上百个类进行反混淆,增加Reflector代码可读性,这次发布的版本也没有进行任何混淆

9,解除Reflector对部分产品反编译的限制,里面居然有国产的Dv_News

10,针对名称混淆,如果出现不可见字符,一律使用斜杠\加ASCII码的方式

11,解封所有隐藏功能。那个路径,是vs所在路径,选择需要的功能,然后Extract……

12,增加简单的反流程混淆功能

    一般的流程混淆(如SmartAssembly),都是通过增加很多跳转指令,打乱IL指令的顺序,而Reflector采用的是栈式分析,遇到这种最简单的调整,直接因为栈不平衡而崩溃。我找到问题所在后,发现根本无法补救,因为Reflector可以说压根就没有AST!做了一个尝试,把多余的跳转全部干掉,结果Reflector的分析过程相当脆弱……最后,在进行指令分析之前,增加一块功能,根据强跳转给指令来一个排序,排序后,每一个强跳转,实际上就是下一句,然后再花最小的代价增强Reflector的分析功能(因为它还是脆弱得立马崩溃……)

    写到最后,忽然间想起来,我在08年做过反名称混淆和反流程混淆的工具,基于Cecil,离开上海后不知道代码丢哪里去了。当然,我的工具还有一些非常具有特色的功能,移植到Reflector是不可能了,因为Reflector的架构真的很糟糕!

    同根生与Cecil,我很看好ILSpy!并且我发现ILSpy有很棒的AST和专门的反流程混淆!

下载地址改为:http://xcode.codeplex.com/releases/view/64499

最后,为了辨别不同的修改版,把版本号给改了一下!

最最后,Reflector的反流程混淆能力依然很差,这里推荐新生的ILSpy,它的开源和规范化,有取代Reflector的趋势!

修改版 Reflector v1.0.2011.0408

源代码(密码是:NewLife+群号码,7个字母和8个数字,别偷懒o(∩_∩)o )

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏牛客网

考点总结:互联网校招技术岗都考些什么?数据结构算法游戏 + 场景c++面向对象javaJVMSpringandroid数据库计网线程安全linux前端询问面试官

数据结构 红黑树 pk 平衡二叉树 hash表处理冲突的方法 算法 手写 最长无重复字符子串 链表的增、删、查、逆序 数组实现队列,要求可以动态扩展,保证较高的...

38270
来自专栏向治洪

android 加载图片oom若干方案小结

本文根据网上提供的一些技术方案加上自己实际开发中遇到的情况小结。 众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或2...

20880
来自专栏FreeBuf

Frida在爆破Windows程序中的应用

谈到爆破,相信大部分网络安全从业者都并不陌生,爆破爆破,就是暴力破解嘛。通过枚举尝试尽可能多的可能解,再进行验证判断是否正确。在进行web的爆破时,我们通常会使...

25220
来自专栏Phoenix的Android之旅

Dagger2 Android应用:@Component和@Module

这部分会介绍一下DI的主要概念,包括Component,Module,但不涉及和Android有关的具体代码。

15120
来自专栏极客慕白的成长之路

信息安全实验室招新试题和完全解析

写个网页应该是很简单的,不管是静态网页还是带特效的网页。但是有几个问题,需要说明一下。

13930
来自专栏黑泽君的专栏

day38_Spring学习笔记_06_CRM_02

注意:当前员工的职务所属的部门,此部门下的所有职务。代码表示:post.department.postSet editStaff.jsp

11320
来自专栏我就是马云飞

RxJava2 实战知识梳理(4) - 结合 Retrofit 请求新闻资讯

前言 如何通过结合Retrofit框架来进行网络请求,也是RxJava的学习过程中必须要掌握的一环。网上已经有很多开源项目和文章介绍了,今天这篇文章,我们就通过...

21480
来自专栏TungHsu

【干货】什么?Python3.X不能输出中文?原来是编辑器geany的锅?!

小白说我要开始学Python了,既然3.X支持中文,那就学3吧。于是安装好Python环境,下载好geany就开始写了。 先写个“Hello World”吧,作...

49760
来自专栏听雨堂

【3】利用Word模板生成文档的总结

阅读目录 Word二次开发概况 使用DsoFramer进行开发 使用Interop进行开发 打开、关闭和写入操作 批量替换文本 遍历段落替换文本 查找后逐个替换...

39850
来自专栏上善若水

L003Linux和androidNDK之linux好玩的命令

你可能了解 ‘ls’ 命令,并经常使用它来查看文件夹的内容。但是,有些时候你可能会拼写成 ‘sl’ ,这时我们应该如何获得一些乐趣而不是看见“command n...

13830

扫码关注云+社区

领取腾讯云代金券