本文源链接: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. iOS 获取设备型号 ip6更新

    //获得设备型号 + (NSString *)getCurrentDeviceModel:(UIViewController *)controller { ]; size_t len; char *m ...

  2. vue build后运行错误

    events.js:141 throw er; // Unhandled 'error' event 这个是端口占用的问题 $ http-server dist events.js:141 throw ...

  3. gdb 小技巧

    https://www.gitbook.com/book/wizardforcel/100-gdb-tips/details

  4. 简述一下 src 与 href 的区别

    href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接. src是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置:在请求src资源时会将其指向 ...

  5. Linux(centos)新建,删除,移动,重命名文件夹和文件的命令

    1.新建文件夹 mkdir 文件名 新建一个名为test的文件夹在home下 view source1 mkdir /home/test 2.新建文本 在home下新建一个test.sh脚本 vi / ...

  6. 索引快速扫描(index fast full scan)

    一.索引快速扫描(index fast full scan) 索引快速全扫描(INDEX FAST FULL SCAN)和索引全扫描(INDEX  FULL SCAN)极为类似,它也适用于所有类型的B ...

  7. oracle 替换字符串中指定位置内容

      1.情景展示 返回服务器的身份证号需要进行加密:只保留前四位和后四位,中间使用*代替,如何实现? 2.解决方案 第一步:查看该表的身份证号的长度有几种类型: 第二步:编写sql 错误方式: 长度为 ...

  8. 【PMP】十五至尊图

    以上是PMP的10大知识领域与5个过程组,在PMP考试中属于必须记忆的知识,该知识来源于PMBOK 第6版 附件为每日练习记忆模板,可以更好的记忆上图 点击下载附件

  9. 如何在cmd命令下运行python脚本

    1.打开cmd窗口,输入:cd c:\\python27  (首先得确认python已加入环境变量) 2.第二条命令:python[空格]完整的python脚本路径,运行即可 3.一个案例: Micr ...

  10. ubuntu 16.04 LTS 修改 国内源(以中科大源为例)

    国内有很多ubuntu的源,包括:网易源(这个之前用过,速度很快的),阿里源,还有很多教育网的源,如:清华源,中科大源. 这里要下载的是中科大ubuntu16.04的源列表,可以在这里获得:https ...