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

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

时间:2017-03-28 11:22:20      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:write   com   tty   class   签名   keystore   oid   版本   -o   


本文源链接: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的密码

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

标签:write   com   tty   class   签名   keystore   oid   版本   -o   

原文地址:http://blog.csdn.net/qq393830887/article/details/56025923

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