11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 4775|回复: 14
上一主题 下一主题

[加密解密] 【SWF加密处理终极篇】——大神也要吐血三升的各种加密手段

[复制链接] TA的其它主题
发表于 2018-11-6 10:58:09 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 TKCB 于 2019-1-20 16:16 编辑

TKCB网站
网址:www.tkcb.cc


一些加密方式和思路
其实我是很不喜欢加密的(当然更反感的是别人辛辛苦苦做得东西被别人破解),但是,世界那么乱,我能怎么办?。

加密是无奈的选择,是一段不朽的悲歌……
任何一种加密方式如果被普及都会有相应的破解工具问世,所以我几乎在下面不会提到多少具体的加密代码,只会提供思路,思路有千万种,任何一个解密工具都不可能做到完美解密的(相信我没错)……

大部分思路都是提高解密成本的思路,如果解密成本太高,相信没有多少人愿意做破解工作。

而且我觉得真正的高手(大师级别更是懒得理你)要么不屑去破解别人东西,要么只是去破解一些非常重要的东西,你难道以为黑客会去费九牛二虎之力攻破你的电脑,然后看你有多少XXX片子吗?这样的话就想多了。

其实看了那么多帖子,大致的主流的加密手段有四种(主流之所以是主流是因为方便快捷和安全度更高):
1. 混淆加密(必须)
2. 二进制加密(重要)
3. 加壳加密(重要)
4. 加密工具(可选)

但是其实还有很多加密思路可以提高反编译的成本,但就是相对繁琐和复杂:
5. 删除数据类型和缩进压缩(可选)
6. 多语言编程或者加密(可选)
7. 以难以理解高大上的方式编写程序或者修改源码(可选)
8. 高版本代码的嵌入和随机运行(可选)
9. 汇编指令混淆(可选)
10. 文件的深度放置和添加无数的无用的干扰代码(可选)
11. 简单的防止内存提取(可选)
12. 后台语言加密(可选)
13. 其他方式



加密方式和思路的详细解释
1. 混淆加密(必须)
混淆加密应该是所有的程序语言都必备的加密手段了,因为只有这个是最简单和最最有用的加密方法,简单来说就是对所有代码的变量名,方法名,类名等等进行随机命名。
可以自己手动进行逐个命名,也可以使用工具(通常是使用工具的),可以使用一些较为纯洁的工具,而不是那些看似加密实则可能在你的程序中留有后门的加密工具。
我曾经试图使用SWF解压和压缩工具 + HxDchs 工具对SWF进行加密,但是无奈怎么都不成功,不知道是不是我哪里操作错误~~你们可以自行百度和参考我上面提到的那么多帖子(如果有耐心的话)。
如果你不愿意开源,这个是必须的,我强烈推荐使用。

2. 二进制加密(重要)
其实这个是一种相当强力的加密手段,在对方没有弄清楚反二进制的方法之前,基本SWF不可能破解(任何资源都别想提取,当然也要取决你的二进制算法了)。
大致的思路就是使用代码加载SWF,然后对SWF的Byte数组进行拆分,重组,混乱,添加,删除等等方式。
之后将二进制加密的SWF保存,在运行的时候在进行反二进制操作,然后获取原始的SWF文件,以此保证程序的正常运行。
二进制和混淆是我强烈推荐的方法,必须双剑合并。
下面是二进制加密的fla,里面有具体代码和注释,还附带一片word文档(讲解如何二进制加密)。
游客,如果您要查看本帖隐藏内容请回复


3. 加壳加密(重要)
这也是一种比较重要的加密手段,下面提到的部分其他思路有的是建立在这个加密手段之上的。
其实很简单,也就是程序不是直接运行原始的主程序SWF,而是先运行加壳的SWF,然后加壳的SWF在加载主的SWF(这时候主的SWF可能已经进行了各种加密处理)。
使用这个加密手段可以让破解者必须先破解壳文件SWF,不然是无法获取主的SWF的,算是一种提高解密成本的加密手法。
这个我也比较推荐使用。

4. 加密工具(可选)
最简单的加密方法之一,也算比较给力的加密方法,前提是这个工具比较强大和可靠,现在好像大家都知道的是DoSWF,当然还有一些其他的工具,可以自行百度。
虽然加密工具很方便,也挺实用的,防菜鸟和一些看似高手不是高手的人很有用。但是我个人是不太推荐单独使用的,如果要用请和其他加密方式一起使用。

5. 删除数据类型和缩进压缩(可选)
这个其实重点在于数据类型的删除,因为如果变量没有数据类型,会失去很大的可读性(谁也不愿意看没有数据类型的代码,又不是JS本身自带免数据类型),至于缩进压缩只是附带的(其实我觉得缩进压缩没多少用吧)。

6. 多语言编程或者加密(可选)
如果你是擅长多种语言,可以在AS代码中随时和其他语言保持通信交互,然后程序才可以正常运行。
这样加密之后(因为你是用你的方式加密的,谁也不知道怎么加密的),所以破解者必须手动的排除那些影响主程序运行的代码。
如果你用了其他代码实现了一些算法和代码,那么破解者必须要懂那些你使用的语言,不然程序没办法正常运行。
其实多语言编程和加密是很厉害的手段,但是前提是你擅长使用多种语言进行编程。

7. 以难以理解高大上的方式编写程序或者修改源码(可选)
一些资深的高级程序员通常写代码很紧凑和简洁,而且由于他们擅长位运算,通常代码中充满了位运算。
而且如果刻意对某些关键算法和代码进行非正常逻辑的代码编写(前提是不影响多少代码效率)。
这样之后,代码只有大神才可以看懂,而且有很多时候没有注释的话,大神也看的累的捉急!!!
所以这一条方法其实是对于大神程序员才有用的,因为他们才可以编写出神一样难以理解的代码。

8. 高版本代码的嵌入和随机运行(可选)
这一条挺没用的,但是这会强迫对方使用高版本的Flash或者类库,不然没办法运行你的代码,除非手动删除。
有时候对方破解后要在低版本的Flash Player中运行,这时候没有这些高版本的代码是没办法运行的。

9. 汇编指令混淆(可选)
可以参考 “as3加密入门-4使用avm2内嵌式汇编指令混淆简介 ” 这篇帖子(下面有链接),其实就是添加一些无用的代码,然后使用跳转功能忽略这些代码。

10. 文件的深度放置和添加无数的无用的干扰代码(可选)
这一条其实我想了一个自己觉得很NB的思路,可是就是不告诉你们。
但是我可以告诉你们,是在壳文件里面添加N多无用的代码,至于怎么加,加的方式,你们自行脑补(这样才可以防止一切解密工具)。

11. 简单的防止内存提取(可选)
这一条是看到别人说的,然后粘贴复制的(我就是这么无耻),但是好像破解工具已经可以搞定这个方法。
事实上,之所以swf能被内存提取,并不是FlashPlayer在运行时需要swf原始文件,而是swf文件以字节数组的形式在loaderInfo.bytes中保存了一份副本,只要简单处理此副本就能轻易废掉绝大多数内存提取工具(搜索文件头的办法)。
[Actionscript3] 纯文本查看 复制代码
public function hideSWF ( bytes : ByteArray ) : void
 {
     for( var i : int = 0; i < 7; i++ )
     {
         bytes = int( 0xFF * Math.random() );
     }
 }
 hideSWF( this.loaderInfo.bytes );
 hideSWF( loader.contentLoaderInfo.bytes );
 
简单的内存加密SWF,防止内存提取SWF.zip (31.42 KB, 下载次数: 3, 售价: 50 银子)

本帖被以下淘专辑推荐:

发表于 2019-3-14 10:18:45 | 显示全部楼层
加密方式和思路的详细解释加密方式和思路的详细解释
回复

使用道具 举报

发表于 2019-3-22 18:03:09 | 显示全部楼层
研究下撒11111
回复

使用道具 举报

发表于 2019-8-13 11:33:08 | 显示全部楼层
阿斯蒂芬1232134234234234234
回复

使用道具 举报

发表于 2019-8-14 13:58:21 | 显示全部楼层
Good ~~~!!!
回复

使用道具 举报

发表于 2020-2-3 13:03:31 | 显示全部楼层
研究下1111111111111111111
回复

使用道具 举报

发表于 2020-2-3 14:45:44 | 显示全部楼层
我也想看看加密
回复

使用道具 举报

发表于 2020-2-3 14:47:19 | 显示全部楼层
一看吓一跳  200银子555
回复

使用道具 举报

发表于 2020-2-13 22:22:32 | 显示全部楼层
很全很到位,谢谢
回复

使用道具 举报

发表于 2020-2-22 18:24:01 | 显示全部楼层
很赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



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