zoukankan      html  css  js  c++  java
  • Android应用安全防护和逆向分析 ——apk混淆成其他语言代码

    现在很多人对于app的安全是越来越重视了,尤其是金融相关的行业,对于app的防范可是下足了功夫。各种加固,各种加密算法,层出不穷。我个人觉得,在安全技术这块,没有绝对安全的。也许今天这个技术起到了防范作用,但是也许一段时间后,就有人把这个技术给破解了。所以说如果我们可以给对方破解我们的app增加难度,那也是起到了一个很大的防护功能了。

    我们每个app在上线的时候,都会进行代码混淆。将一些类名,包名,方法名等等混淆成大小写字母的形式,即使对方反编译出我们的app,如果进行了混淆,那些对方看到的代码将会是这个样子的,如何反编译?可以看看这篇文章:https://www.cnblogs.com/huangjialin/p/10039704.html

    这样的代码读取的难度就大大的增加了。由于英文字符是全世界通用,在加上目前市场上大部分的app都是这样混淆的,所以说在反编译后都去代码,基本上都有一定的心得了,所以说难度相比于以前大大的减弱了。那么能不能混淆成其他语言呢?

    我们知道Java语言是支持双字符的,所以可以将包名,类名,变量名,方法名定义成中文,或者其他国家的语言都可以的。也就是说我们可以将包名,类名,方法名命名为其他语言,比如中文,英文,法文等等。

     1 package com.hjl.proguardchinese;
     2 
     3 import android.support.v7.app.AppCompatActivity;
     4 import android.os.Bundle;
     5 import android.util.Log;
     6 
     7 public class 测试 extends AppCompatActivity {
     8     String 黄家磷 = "我叫黄家磷";
     9 
    10     @Override
    11     protected void onCreate(Bundle savedInstanceState) {
    12         super.onCreate(savedInstanceState);
    13         setContentView(R.layout.activity_main);
    14         Log.d("huangjialin","--------->" + 黄家磷);
    15     }
    16 }

    结果:

    1 2019-02-22 14:31:44.813 18913-18913/? D/huangjialin: --------->我叫黄家磷

    言归正传,我们继续说混淆,要想了解混淆的原理,那得看源码。而混淆架包proguard.jar又是开源的。

    项目地址:https://sourceforge.net/projects/proguard/需要翻墙。将项目导入,运行,当然还需要其他一些资源包,大家自行下载。

    具体的可以参考这篇文章:https://blog.csdn.net/jiangwei0910410003/article/details/61618945

    当然,上面那种修改proguard源码来实现混淆成其他语言,也是可以实现的,不过这里,说一种更加简单的方式。

    在项目目录下也就是和proguard-rules.pro同目录下新建一个txt文件

    然后在该文件夹中加入对应的语言,如果想混淆成中文,你就加中文,如果你想混淆成其他语言你就加其他语言。

    然后在proguard-rules.pro文件中加入下面三行代码,完成

    1 -obfuscationdictionary proguard_huangjialin.txt
    2 -classobfuscationdictionary proguard_huangjialin.txt
    3 -packageobfuscationdictionary proguard_huangjialin.txt

    注意,如果文件中有-optimizations开头的,请把该行注释掉,到这里就完成了。我这里弄了藏文,反正我也看不懂,看看效果

     

    看看中文的效果

     

     

  • 相关阅读:
    CSS3动画
    Grid布局
    JS向上取整、向下取整、四舍五入等
    JS DOM资料
    关于setInterval和setTimeout中的this指向问题
    JavaScript 高级技巧 Memoization
    请求接口的方式
    HTTP协议知识
    CSS样式重置
    Chrome 为什么使用多进程,不使用多线程
  • 原文地址:https://www.cnblogs.com/huangjialin/p/10418608.html
Copyright © 2011-2022 走看看