Unity3D对apk反编译、重编译、重签名



本文源链接:http://blog.csdn.net/qq393830887/article/details/56025923

工具

  • Java环境
  • Apktool(这玩意有些坑爹,不是官网最新的就好,找到一个好用的版本能少很多坑)

Apktool

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);

- 反编译之后的图如上(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 密码");
        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的密码不一样,还得另外输入Key的密码

时间: 2024-12-09 17:05:15

Unity3D对apk反编译、重编译、重签名的相关文章

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

apk 反编译大家都比较熟悉,这里只做一个笔记. 1 反编译 apk apktool d perfect.apk 这样就把资源文件解压缩了, classes.dex 也反编译成了 smali 文件 2 修改 smali 文件 得到 smali 文件,现在就可以对 smali 文件进行修改和添加自己的代码了. 当然可以进一步用  dex2jar 处理将  dex 转成 java class 文件, 再用  jd-jui 等反编译成 java 代码. 现在 apk 基本都做了混淆, 但仔细读还是基本

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

背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />权限.在只有被测试APP的apk文件的情况下,修改apk文件后缀名为zip,解压缩后,修改AndroidManifest.xml文件,删除META-INF文件夹,重压缩为apk文

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

反编译工具 : 总结了一下 linux, windows, mac 上的版本, 一起放到 CSDN 上下载; -- CSDN 下载地址 : [email protected]:~/decompiler$ tree -L 2 . ├── linux │   ├── apktool │   ├── dex2jar-0.0.9.15 │   └── jd-gui ├── mac │   ├── apktool │   ├── dex2jar-0.0.9.15 │   └── jd-gui-0.3.5.

Android反编译(三)之重签名

Android反编译(三) 之重签名 [目录] 1.原理 2.工具与准备工作 3.操作步骤 4.装X技巧 5.问题 1.原理 1).APK签名的要点 a.所有的应用程序都必须有数字证书 ,Android系统不会安装一个没有数字证书的应用程序: b.Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证: c.数字证书都是存在有效期的,Android只是在应用程序安装的时候才会检查证书的有效期.如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能. d.A

Android-Mac电脑如何进行APK反编译-使用apktool、jd-gui

最近群里有人问如何在mac下进行apk反编译,我也没试过,以前都是在windows下进行反编译的,windows下很简单,有许多比较好的集成工具,如apkide(改之理),不过我猜mac下应该和windows下差不多,趁着嗑瓜子的功夫,我研究了下mac下如何进行apk反编译,其实和windows下是一样,我在这里记录了下: 第一步:下载反编译工具集,apktool.dex2jar.jd-gui,最后我会上传这些工具,解压后如下图: 下面那个弹出框是JD-GUI的,用来将字节码反编译成java源文

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

最近群里有人问如何在mac下进行apk反编译,我也没试过,以前都是在windows下进行反编译的,windows下很简单,有许多比较好的集成工具,如apkide(改之理),不过我猜mac下应该和windows下差不多,趁着嗑瓜子的功夫,我研究了下mac下如何进行apk反编译,其实和windows下是一样,我在这里记录了下: 第一步:下载反编译工具集,apktool.dex2jar.jd-gui,最后我会上传这些工具,解压后如下图: 下面那个弹出框是JD-GUI的,用来将字节码反编译成java源文

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

本文主要介绍了Android apk反编译基础,使用的工具是apktoos,我们将用图文的方式说明apktoos工具的使用方式,你可以参考这个方法反编译其它APK试试看了 很久有写过一个广工图书馆主页一个类爬虫的demo(因为没接口,只能扒取静态网页),实现一些图书馆系统的一些功能.但最近发现图书馆系统在html页面上做了手脚,一页html页面中嵌入了几千行的注释,并有了自己的App,应该是为了增加扒取的流量成本来防止别人去扒取网页,不过加注释这手段就不敢恭维了,内网访问速度还行,但外网访问的话

【Android】apk反编译与防止反编译

反编译 相关工具下载:http://pan.baidu.com/s/1bnAkIb9 apktool 这是一个可以对apk进行反编译和重打包的工具. 下载地址:http://code.google.com/p/android-apktool/ 反编译apk 1.把apk文件放到apktool解压目录下. 2.打开命令行,cd到工具解压缩目录,使用"apktool d apk文件路径"命令反编译apk. apktool反编译命令辅助脚本代码(windows) 3.反编译生成的文件就在工具

android APK反编译与再编译31m

反编译首先要安装的软件有:,,反编译软件后面和这个压缩包,把里面的东西解压到下面,,前期工作完成.这里以反编译和编译为例,运行,用命令定位到所在目录输入:回车这个命令,是工具,后面的是反编译,最后面的是反编译以后的文件放到当前目录的文件夹里面编译然后可修改的相关文件,修改完后重新编译软件回到,输入:回车是编译的意思,是之前反编译的文件夹编译好以后,到里面的文件夹内,会看到一个的,这个就是我们重新编译好的了.(注:这是未签名的) http://weibo.com/20180109PP/100160