Android反编译
以下情况不适于腾讯云乐固、360加固、爱加密等第三方工具对apk加固过的应用,防止反编译二次打包
反编译(未混淆情况)
1.获取资源文件:
命令行界面apktool.bat d -f test.apk fileName (然而修改后缀名为.zip即可获得);
apktool2.0以上版本:apktool.bat d -f test.apk -o fileName, 有些apk编译失败,可尝试把apktool.jar升级到2.0以上
2.获取源代码:
提取apk -> zip 中的classes.dex文件:dex2jar.bat classes.dex 获得classes_dex2jar.jar文件
使用 jd-gui.exe查看jar文件查看源码(另外可以用Eclipse反编译插件查看)
3.查看xml文件
aapt d xmltree filepath/..apk xmlname : 以树型显示apk中某个xml文件
工具下载:链接: http://pan.baidu.com/s/1o6CHvAi 密码: it6s
4.二次打包
apktool.bat b fileName (打包apk放在dist目录),生成到apk并不能安装,需要重签名才能安装
5.重签名
工具:keytool,jarsigner和zipalign这三个工具软件。keytool和jarsigner包含在JDK中,zipalign包含在Android SDK中,环境配置:JAVA_HOME,ANDROID_HOME
生成密钥:keytool -genkey -v -keystore xuhui-key.keystore -alias xuhui-key -keyalg RSA -keysize 2048 -validity 10000
重签名:
jarsigner -verbose -keystore demo.keystore -signedjar test_signed.apk test.apk mykey
注:jarsigner在jdk/bin目录
7.修改class文件
反编译后往往得到的是.class文件,通过class反编译为java文件通常容易出错,不如直接修改class文件 ,推荐试用工具:jclasslib
1.装打开jar-然后找到需要修改的class文件或者直接打开jar解压文件中的class文件,
2.使用java bytecode (jclasslib) 查找到要修改的变量地址
3.新建一个工程进行修改:
package com.xuh; import java.io.*; import org.gjt.jclasslib.io.ClassFileWriter;
import org.gjt.jclasslib.structures.CPInfo;
import org.gjt.jclasslib.structures.ClassFile;
import org.gjt.jclasslib.structures.constants.ConstantDoubleInfo; public class ModifyByteCode {
public void Run() {
try {
String filePath = "C:\\Test.class";//需要修改的class文件
FileInputStream fis = new FileInputStream(filePath);
DataInput di = new DataInputStream(fis);
ClassFile cf = new ClassFile();
cf.read(di);
CPInfo[] infos = cf.getConstantPool();
int pos = 123;//变量地址
if (infos[pos] != null) {
ConstantDoubleInfo uInfo = (ConstantDoubleInfo) infos[pos];
uInfo.setDouble(1.0);
infos[pos] = uInfo;
}
cf.setConstantPool(infos);
fis.close();
File f = new File(filePath);
ClassFileWriter.writeToFile(f, cf);
} catch (Exception e) { }
}
}
参考链接
Android反编译的更多相关文章
- Android反编译(三)之重签名
Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Androi ...
- Android反编译(二)之反编译XML资源文件
Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具 apktool http ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
- Atitti.java android反编译解决方案-----虚拟机方案
Atitti.java android反编译解决方案-----虚拟机方案 哈哈,终极解决方案是虚拟机...c++也可以反编译为汇编代码,但无需担心,因为读懂汇编太麻烦..只要不能拿到c++源码就可.. ...
- Android反编译工具的使用-Android Killer
今天百度搜索“Android反编译”搜索出来的结果大多数都是比较传统的教程.刚接触反编译的时候,我也是从这些教程慢慢学起的.在后来的学习过程中,我接触到比较方便操作的Android反编译.在这,我将使 ...
- Android 反编译
Android 反编译 步骤:1.下载apktool 工具,这一步 主要是反编译 xml 文件. 步骤:2 把xx.smali 文件转为java 工具 (单个) 图形界面 下载dex2jar 和xj ...
- 转 谈谈android反编译和防止反编译的方法
谈谈android反编译和防止反编译的方法 android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的项 ...
- Android 反编译apk 详解
测试环境: win 7 使用工具: CSDN上下载地址: apktool (资源文件获取) 下载 dex2jar(源码文件获取) 下载 jd-gui (源码查看) ...
- Android 反编译工具简介
Android 反编译工具: 所需工具:1 apktool : 用于获取资源文件 2 dex2Jar : 用于将classes.dex转化成jar文件 2 jd-gui: 将jar文件转化成java文 ...
- Android反编译教程
本文摘自 http://blog.csdn.net/ithomer/article/details/6727581 本文Android反编译教程,测试环境: Win7 Ultimate x64 Ubu ...
随机推荐
- Try out the latest C++ compiler toolset without waiting for the next update of Visual Studio
Updated 22/Apr/2016: The NuGet package is now being uploaded daily. The payload doesn’t change every ...
- 重新想象 Windows 8.1 Store Apps (78) - 控件增强: ScrollViewer, FlipView, Popup
[源码下载] 重新想象 Windows 8.1 Store Apps (78) - 控件增强: ScrollViewer, FlipView, Popup 作者:webabcd 介绍重新想象 Wind ...
- inotify--内核中文件系统的通知机制
转载:http://www.ibm.com/developerworks/cn/linux/l-inotifynew/index.html 一. 引言 众所周知,Linux 桌面系统与 MAC 或 W ...
- git 使用笔记(一)
1. 环境介绍 windows10 2.使用 2.1 安装git for windows 2.2 创建一个文件夹, 开始git管理 2.3 查看该目录,包括隐藏文件 2.4 把testgit.txt添 ...
- Sigleton 单例模式 的简单应用
需求:一个简单的后台java程序,收集信息,并将信息发送到远端服务器. 实现:实现一个后台线程,实时处理发送过来的信息,并将信息发送到服务器. 技术要点: 1.单例模式 2.队列 并没有实现全部代码, ...
- 阿里前CEO卫哲用自己10余年经历,倾诉B2B的三差、四率、两大坑
今日(12 月 28 日),嘉御基金创始人.阿里巴巴(B2B)前 CEO 卫哲在第三届中国 B2B 电子商务大会上进行了"B2B 冬天里的春天"的主题分享.他提出中国 B2B 行业 ...
- CSS3随内容自动伸缩的背景
CSS3给我们带来一个非常实用的新属性:border-image,利用这个属性我们可以做出随着内容的增减自动伸缩的背景.废话不多说,看代码! HTML: <ol> <li>第一 ...
- javascript宿主对象之window.history
window.historys属性允许我们操作同一个浏览器回话中的已访问页面,例如我们可以看到在这之前我们浏览页面的数量: window.history.length 由于隐私保护,我们无法获取这些页 ...
- Smartforms常见问题
分类: 1.使用SFSY-FORMPAGES显示总页数的时候,如果页数大于9,将会在前10页显示成星号* 解决: 有时候这样做完之后,星号*是没有了,但是字体会有颠倒或者重叠的现象. 如果出了这个问题 ...
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q88-Q90)
Question 88You have a Microsoft .NET Framework console application that uses the SharePoint client o ...