最终版 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的趋势!
源代码(密码是:NewLife+群号码,7个字母和8个数字,别偷懒o(∩_∩)o )
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android Selector获取焦点后文本背景修改的实现代码
- 基于SceneForm实现子弹射击(绘制子弹运行轨迹)
- android实现清理缓存功能
- Android实现 Shape属性gradient 渐变效果
- 1K GitHub star+ 的项目是如何炼成的?
- Android属性动画实现图片从左到右逐渐消失
- Android实现清除应用缓存功能
- VBlog的代码结构,使用vue-element,vue-vant组件开发的纯前端博客
- Android仿微信视屏悬浮窗效果
- Android仿QQ可拉伸头部控件
- android使用surfaceview+MediaPlayer播放视频
- Android性能之冷启动优化详析
- Android自定义View实现地铁显示牌效果
- Android自定义控件实现望远镜效果
- Android自定义View实现点赞控件