你造吗?代码混淆技术就是让代码晦涩难懂 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiner
V2EX    推广

你造吗?代码混淆技术就是让代码晦涩难懂

  •  
  •   xiner 2017 年 6 月 7 日 1992 次点击
    这是一个创建于 3163 天前的主题,其中的信息可能已经有所发展或是发生改变。

    APP 开发完以后由测试工作人员进行测试,没有 bug 就会正式发布和推广,一般正规大一点的公司会有独立的市场推广部门进行推广,技术部门进行维护以及加密混淆打包,这里的加密混淆打包相信开发人员都清楚其中的含义。几维安全发现,还有一种方式可以打包混淆 APP,那就是安卓通过 eclipse 代码混淆技术 打包+Proguard 方式。

    代码混淆技术的定义是什么?

    代码混淆技术是把代码转换为一种功能,使破解者难以阅读和理解。比如把代码中的每一项元素改写为无意义的名字,使得破解人在阅读时无法根据名字得知其用途,也是增加反编译的阅读难度。

    代码混淆技术的方式

    为了避免出现盗版的情况,提高应用程序的安全性能,技术人员会对一款 APP 进行代码混淆技术操作。下图中就是对代码混淆前后的代码结构对比,右图是对源代码文件中的一些类名做了变换,改成了以英文字母命名的名称,这样破解者在阅读时就不容易理解其特指的含义。

    代码混淆技术的利于弊

    代码混淆技术的利是方法简单、便于操作。

    代码混淆技术的弊是会给开发者的调试工作带来困难,开发人员通常需要保留原始的未混淆的代码用于调试,由于混淆是不可逆的,在混淆过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失会使程序变得更加难以理解。

    混淆的分类

    1、布局混淆

    布局混淆是指删除或者混淆软件源代码或者中间代码中与执行无关的辅助文本信息,增加攻击者阅读和理解代码的难度。软件源代码中的注释文本、调试信息可以直接删除,用不到的方法和类等代码或数据结构也可以删除,这样即可以使攻击者难以理解代码的语义,也可以减小软件体积,提高软件装载和执行的效率。

    2、数据混淆

    数据混淆是修改程序中的数据域,而对代码段不作处理。常用的数据混淆方式有合并变量、分割变量、数组重组、字符串加密等。

    3、控制混淆

    控制混淆也称流程混淆,它是改变程序的执行流程,从而打断逆向分析人员的跟踪思路,达到保护软件的目的。一般采用的技术有插入指令、伪装条件语句、断点等。伪装条件语句是当程序顺序执行从 A 到 B,混淆后在 A 和 B 之间加入条件判断,使 A 执行完后输出 TRUE 或 FALSE,但不论怎么输出,B 一定会执行。

    4、预防混淆

    预防混淆一般是针对专用的反编译器设计的,目的就是预防被这类反编译器反编译。是利用特定的反编译器或反混淆器的弱点进行专门设计。预防混淆对于特定的反编译器非常有效,所以在使用时要综合利用各种反编译器的特点进行设计。

    最后,几维安全告诉大家代码混淆技术并不是加密代码,它只是让代码看起来比较难懂,但是机器执行起来的逻辑是一样的,增加的是人为分析的难度和时间成本。更多相关知识阅读请关注几维安全官网。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4645 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 06:38 PVG 14:38 LAX 22:38 JFK 01:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86