本文源链接: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反编译、重编译、重签名的更多相关文章

  1. [转]Android应用安装包apk文件的反编译与重编译、重签名

    背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission androi ...

  2. APK反编译、重编译、签名、查看源码

    1.反编译与重编译 工具:apktool 下载地址:https://ibotpeaches.github.io/Apktool/ 环境:Java (JRE 1.7) 安装步骤:参考官网(也可以不安装, ...

  3. android逆向基础:apk 反编译 重打包 重签名

    apk 反编译大家都比较熟悉,这里只做一个笔记. 1 反编译 apk apktool d perfect.apk 这样就把资源文件解压缩了, classes.dex 也反编译成了 smali 文件 2 ...

  4. 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译

    反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : http://download.csdn.net/detai ...

  5. Android反编译(三)之重签名

    Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Androi ...

  6. (转)Android-Mac电脑如何进行APK反编译-使用apktool、jd-gui

    最近群里有人问如何在mac下进行apk反编译,我也没试过,以前都是在windows下进行反编译的,windows下很简单,有许多比较好的集成工具,如apkide(改之理),不过我猜mac下应该和win ...

  7. Android apk反编译基础(apktoos)图文教程

    本文主要介绍了Android apk反编译基础,使用的工具是apktoos,我们将用图文的方式说明apktoos工具的使用方式,你可以参考这个方法反编译其它APK试试看了 很久有写过一个广工图书馆主页 ...

  8. Android: apk反编译 及 AS代码混淆防反编译

    一.工具下载: 1.apktool(资源文件获取,如提取出图片文件和布局文件) 反编译apk:apktool d file.apk –o path 回编译apk:apktool b path –o f ...

  9. Android Studio 动态调试 apk 反编译出的 smali 代码

    在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...

随机推荐

  1. PageObject&PageFactory

    几篇介绍PageObject&PageFactory文章: PageFactory: http://code.google.com/p/selenium/wiki/PageFactory Pa ...

  2. 算法笔记_202:第三届蓝桥杯软件类决赛真题(Java高职)

    目录 1 填算式 2 提取子串 3 机器人行走 4 地址格式转换 5 排日程   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 填算式 [结果填空] (满分11分) 看这个算式: ☆☆☆ + ☆☆ ...

  3. RHEL6.5 grub修复测试

    RHEL6.5 grub修复测试 1.删除系统中的grub.conf配置文件,然后重启系统#rm -f /boot/grub/grub.conf#reboot 2.重启后,系统进入到grub界面:gr ...

  4. 电信网关-天翼网关-GPON-HS8145C设置桥接路由拨号认证

    需求描述: 自从用了电信的200M光纤,解析卡成狗.打开域名3秒左右,不常见的域名8s左右.怀疑电信的网关有问题,故想让路由器拨号认证,进而设置dns解析域名 修改为路由器拨号认证,域名解析缓慢依然没 ...

  5. 批处理转exe工具(Quick Batch File Compiler )|bat格式化exe

    看到的,就是回忆.历史总是那么漫不经心,走完一生.留下可以记忆的脚本.... 对于window编写的bat脚本,想加密吗? 你所想的,前辈们基本上都有产出成果.所以在这个开源.共享.进步的互联网时代. ...

  6. Naive Bayes Classifier 朴素贝叶斯分类器

    贝叶斯分类器的分类 根据实际处理的数据类型, 可以分为离散型贝叶斯分类器和连续型贝叶斯分类器, 这两种类型的分类器, 使用的计算方式是不一样的. 贝叶斯公式 首先看一下贝叶斯公式 $ P\left ( ...

  7. 微信小程序开发学习资料

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  8. 【table】给table表格设置一个通用的css3样式(默认有斑马条纹)

    /* = 表格(默认有斑马条纹) ------------------------------------------ */ .data-table { margin: 10px 0; } .data ...

  9. JSP弹出对话框方式小结

    转自:http://blog.csdn.net/ithomer/article/details/8033002 该博主(创业)另一博客地址: http://blog.mimvp.com JSP 网页在 ...

  10. 转载:Kafka 之 中级 原作者:悟性

    Kafka 之 中级 悟性 发表于 3年前 阅读 21353 摘要: Kafka配置介绍,原理介绍及生产者,消费者Java基本使用方法. 1.    配置 Ø  Broker主要配置 参数 默认值 说 ...