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

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

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

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

 package com.hjl.proguardchinese;

 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; public class 测试 extends AppCompatActivity {
String 黄家磷 = "我叫黄家磷"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("huangjialin","--------->" + 黄家磷);
}
}

结果:

 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文件中加入下面三行代码,完成

 -obfuscationdictionary proguard_huangjialin.txt
-classobfuscationdictionary proguard_huangjialin.txt
-packageobfuscationdictionary proguard_huangjialin.txt

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

看看中文的效果

 

 

Android应用安全防护和逆向分析 ——apk混淆成其他语言代码的更多相关文章

  1. android黑科技系列——Apk混淆成中文语言代码

    一.前言 最近想爆破一个app,没有加壳,简单的使用Jadx打开查看源码,结果把我逗乐了,代码中既然都是中文,而且是一些比较奇葩的中文字句,如图所示: 瞬间感觉懵逼了,这app真会玩,我们知道因为Ja ...

  2. Android应用安全防护和逆向分析 ——apk反编译

    概述 最近一直在学习Android应用安全相关和逆向分析的知识.现在移动app在安全方面是越来越重视了,特别是那些巨头企业涉及到钱的应用,那加密程度,简直是丧心病狂,密密麻麻.从这里可以看出,对于应用 ...

  3. Android开发学习之路--逆向分析反编译

      一般情况下我们想要了解别人的app怎么实现这个动画,这个效果的时候,总是会想到反编译一下,看下布局,看下代码实现.对,这对于有经验的玩家确实手到擒来了,但是初学者,根本就不知道怎么反编译,怎么看代 ...

  4. 从Android设备中提取内核和逆向分析

    本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57074695 一.手机设备环境 Model number: Nexus 5 OS ...

  5. RE-1 逆向分析基础

    逆向分析基础 0x01-0x0C 本笔记使用汇编指令为x86架构下汇编指令,ARM架构汇编指令不做介绍 0x01. 关于RE 逆向工程(Reverse Engineering RE) 逆向分析方法: ...

  6. Android逆向分析(2) APK的打包与安装背后的故事

    前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之 ...

  7. Android逆向分析(2) APK的打包与安装

    http://blog.zhaiyifan.cn/2016/02/13/android-reverse-2/ 2/18日增加对aidl和java编译的描述. 前言 上一次我们反编译了手Q,并遇到了Ap ...

  8. Android动态逆向分析工具ZjDroid--脱壳神器

    项目地址:https://github.com/BaiduSecurityLabs/ZjDroid 前提条件: 1.Root手机一部 2.须要通过Xposed installer( http://dl ...

  9. 【Bugly干货分享】手把手教你逆向分析 Android 程序

    很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个图,感受一下. 第一张图是在把代码注入到地图里面,启动首页的时候弹出个浮窗,下载网络的 ...

随机推荐

  1. Maven + spring + Mybatis + SpringMVC

    tomcat版本:apache-tomcat-7.0.70 一.新建一个maven的web项目 1.1.请勾选“Create a simple project”,创建一个简单的项目,这里不使用模板.也 ...

  2. ubuntu查找命令比较

    1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.    find的使用格式如下:     $ find <指定目录> <指定条件> < ...

  3. 小程序嵌套h5

    <web-view src="https://m.boc7.com/driver_unlogin/driver1"></web-view>

  4. Jmeter参数化HTTP request中Send Files With The Request的文件路径和文件名

  5. pip安装包

    默认的在安装文件的Lib\site-packages\路径下面 cmd窗口 cd切换路径:C:\Users\admin\AppData\Local\Programs\Python\Python36\S ...

  6. 2018.07.10NOIP模拟 Knapsack(单调队列优化dp)

    Knapsack 题目背景 SOURCE:NOIP2016-RZZ-4 T2 题目描述 有 n 个物品,第 i 个物品的重量为 ai . 设 f(i,j,k,l,m) 为满足以下约束的物品集合数量: ...

  7. 38 Cell-phone Emissions can change Brain Activity 手机辐射有可能改变大脑活动

    Cell-phone Emissions can change Brain Activity 手机辐射有可能改变大脑活动 So many people use the cell phone so fr ...

  8. 多参数同时运行docker

    docker run --name=newtomcat7 -t -i -p 5000:5000 -v /root/work/docker:/root/hzbtest 93541fa83230 /bin ...

  9. linux下mysql命令大全

    1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...

  10. UVa 1596 Bug Hunt (STL栈)

    题意:给定两种操作,一种是定义一个数组,另一种是赋值,让你找出哪一步时出错了,出错只有两种,一种是数组越界,另一种是访问未定义变量. 析:当初看到这个题时,感觉好麻烦啊,然后就放过去了,而现在要重新回 ...