码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-08-19 20:19:32      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:alt   class   ack   i++   -o   add   java环境   comment   containe   


本文源链接: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 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反编译、重编译、重签名

标签:alt   class   ack   i++   -o   add   java环境   comment   containe   

原文地址:http://www.cnblogs.com/lytwajue/p/7397618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!