Unity3D对apk反编译、重编译、重签名
本文源链接:http://blog.csdn.net/qq393830887/article/details/56025923
工具
- Java环境
- Apktool(这玩意有些坑爹,不是官网最新的就好,找到一个好用的版本号能少非常多坑)
Apktool
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXEzOTM4MzA4ODc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
Jarsigner
反编译
var argList = ProcessHelper.CreateArgumentsContainer();
argList.Add("java -jar");
argList.Add(ApkToolPath);
argList.Add("d");
argList.Add(pathToBuildProject);
argList.Add("-o");
argList.Add(GetDecodeApkFolder(pathToBuildProject));
var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());
ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));
var result = p.StandardOutput.ReadToEnd();
var error = p.StandardError.ReadToEnd();
p.WaitForExit();
p.Close();
Debug.Log(result);
Debug.Log(error);
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXEzOTM4MzA4ODc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
- 反编译之后的图如上(unknown是没有的)
- 反编译之后能够做一些改动。通常会改动AndroidMainifest.xml
- 牛逼一点的。能够改动smali,比如前面提及到的Unity半屏输入
重编译
var unsignedApk = GetUnSignedApkPath(pathToBuildProject);
FileHelper.DeleteFile(unsignedApk);
var argList = ProcessHelper.CreateArgumentsContainer();
argList.Add("java -jar");
argList.Add(ApkToolPath);
argList.Add("b");
argList.Add(GetDecodeApkFolder(pathToBuildProject));
argList.Add("-o");
argList.Add(unsignedApk);
var cmd = string.Join(" ", argList.ToArray());
var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());
ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));
var result = p.StandardOutput.ReadToEnd();
var error = p.StandardError.ReadToEnd();
p.WaitForExit();
p.Close();
Debug.Log(result);
Debug.LogError(error);
重签名
var unsignedApk = GetUnSignedApkPath(pathToBuildProject);
var finalApk = GetFinalApkPath(pathToBuildProject);
FileHelper.DeleteFile(finalApk);
var argList = ProcessHelper.CreateArgumentsContainer();
argList.Add("jarsigner");
argList.Add("-keystore 路径");
argList.Add("-storepass password");
argList.Add("-signedjar");
argList.Add(finalApk);
argList.Add(unsignedApk);
argList.Add("别名");
var p = ProcessHelper.Start(ProcessHelper.CreateStartInfo());
ProcessHelper.WriteLine(p, ProcessHelper.CreateArguments(argList));
var result = p.StandardOutput.ReadToEnd();
var error = p.StandardError.ReadToEnd();
p.WaitForExit();
p.Close();
Debug.Log(result);
Debug.LogError(error);
- 一个Keystore能够相应多个Key
- 假设Key的password不一样,还得另外输入Key的password
Unity3D对apk反编译、重编译、重签名的更多相关文章
- [转]Android应用安装包apk文件的反编译与重编译、重签名
背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission androi ...
- APK反编译、重编译、签名、查看源码
1.反编译与重编译 工具:apktool 下载地址:https://ibotpeaches.github.io/Apktool/ 环境:Java (JRE 1.7) 安装步骤:参考官网(也可以不安装, ...
- android逆向基础:apk 反编译 重打包 重签名
apk 反编译大家都比较熟悉,这里只做一个笔记. 1 反编译 apk apktool d perfect.apk 这样就把资源文件解压缩了, classes.dex 也反编译成了 smali 文件 2 ...
- 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译
反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...
- Android反编译(三)之重签名
Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Androi ...
- (转)Android-Mac电脑如何进行APK反编译-使用apktool、jd-gui
最近群里有人问如何在mac下进行apk反编译,我也没试过,以前都是在windows下进行反编译的,windows下很简单,有许多比较好的集成工具,如apkide(改之理),不过我猜mac下应该和win ...
- Android apk反编译基础(apktoos)图文教程
本文主要介绍了Android apk反编译基础,使用的工具是apktoos,我们将用图文的方式说明apktoos工具的使用方式,你可以参考这个方法反编译其它APK试试看了 很久有写过一个广工图书馆主页 ...
- Android: apk反编译 及 AS代码混淆防反编译
一.工具下载: 1.apktool(资源文件获取,如提取出图片文件和布局文件) 反编译apk:apktool d file.apk –o path 回编译apk:apktool b path –o f ...
- Android Studio 动态调试 apk 反编译出的 smali 代码
在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...
随机推荐
- VS2015 之 常用快捷键
调试执行 F5,终止调试执行 Shift+F5 启动执行 Ctrl+F5 查找下一个 F3,查找上一个 Shift+F3 附加到进程 Ctrl+Alt+P,逐过程 F10,逐语句执行 F11 切换断点 ...
- Centos7中修改Hostname的方法
一.Centos7中修改的方法: hostnamectl set-hostname <new hostname> 说明:centOS 7 里面修改hostname的方式有所改变,修改/et ...
- 1004: 不明飞行物(ufo)
#include <iostream> #include <iomanip> #include <cstdlib> #include <string> ...
- IDEA引入外部jar包的方法
在做发短信的功能(阿里大于)的时候,我只是吧jar包拷贝到了项目的external library. 拷贝进来之后我用junit写了test方法,可以完美发送短信到手机,但是我这是个web项目,然后我 ...
- CentOS下Crontab安装使用详细说明(转)
来自:http://www.centoscn.com/CentOS/help/2014/1220/4346.html crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的 ...
- JDK5.0 特性-线程同步装置之Semaphore
来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291474.html import java.util.ArrayList; import j ...
- Spark的运行模式(2)--Yarn-Cluster和Yarn-Client
3. Yarn-Cluster Yarn是一种统一资源管理机制,可以在上面运行多种计算框架.Spark on Yarn模式分为两种:Yarn-Cluster和Yarn-Client,前者Driver运 ...
- Android ART runtime简述
此文章原始是PPT格式已转换为PDF,完整内容也能够下载文档阅读: AndroidARTruntimeOverview watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5 ...
- 行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
行内元素:a.b.span.img.input.strong.select.label.em.button.textarea块级元素:div.ul.li.dl.dt.dd.p.h1-h6.blockq ...
- JDK提供的四种线程池
一.线程池什么时候用,有什么好处? “线程池”顾名思义,就是存放线程的池子,这个池子可以存放多少线程取决于采用哪种线程池,取决于有多少并发线程,有多少计算机的硬件资源.使用线程池最直接的好处就是:线程 ...