小骚 发表于 2019-8-7 12:29

Odex修补:不修改apk实现破解

本帖最后由 小骚 于 2019-8-8 21:07 编辑

看了别人的操作和我那个另类破解方法差不多,想能不能省略那么麻烦的步骤,灵感来源:https://forum.xda-developers.com/galaxy-s2/themes-apps/how-to-manually-deodex-odex-t1208320
引用百度百科:什么是ODEX文件?

ODEX是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化过程将其优化生成一个·odex文件单独存放,原apk文件中的classes.dex文件可以保留,也可以删除。这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。
前提:
1.需要Root
2.可能用到幸运破解器
3.一个5.0以上8.0以下的手机,虚拟机还没试(应该没问题)。
4.一个破解完成的apk(有没有修复没关系,360加固的添加个classes2一样用)
ps:为何需要5.0以上,因为我写软件的时候没考虑过还有4.4的手机。为何8.0以下,因为8.0之后是有vdex的,此方法暂时对8.0以上无用


原理大概就是把软件里面的dex转换成odex再替换apk目录下的odex实现破解具体思路看我另一个帖子:https://www.52pojie.cn/thread-935810-1-1.html.也可以开源
演示视频地址:http://www.bilibili.com/video/av62548161

核心代码:public class OdexPatchActivity extends Activity implements View.OnClickListener, FileSelectDialog.IFileSelection {

    private EditText apkPathEt;
    private String apkPath;

    @Override
    public void onCreate(Bundle bundle) {
      super.onCreate(bundle);

      setContentView(R.layout.activity_odex_patch);

      initView();

    }

    private void initView() {
      this.apkPathEt = (EditText) findViewById(R.id.et_apkpath);

      Button selectBtn = (Button) findViewById(R.id.btn_select_apkpath);
      selectBtn.setOnClickListener(this);
      Button applyBtn = (Button) findViewById(R.id.btn_apply_patch);
      applyBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
      int id = v.getId();
      if (id == R.id.btn_select_apkpath) {
            FileSelectDialog dlg = new FileSelectDialog(this, this, ".apk", "", null);
            dlg.show();
      } else if (id == R.id.btn_apply_patch) {
            this.apkPath = apkPathEt.getText().toString();
            ProcessingDialog dlg = new ProcessingDialog(this, new PatchProcessor(), -1);
            dlg.show();
      }
    }

    ////////////////////////////////////////////////////////////////////////////////
    // Processing Dialog

    class PatchProcessor implements ProcessingDialog.ProcessingInterface {
      private String errMessage;
      private String odexPath;

      @Override
      public void process() throws Exception {
            ApkInfoParser parser = new ApkInfoParser();
            ApkInfoParser.AppInfo info = parser.parse(OdexPatchActivity.this, apkPath);
            if (info == null) {
                return;
            }

            String packageName = info.packageName;
            OdexPatcher patcher = new OdexPatcher(packageName);
            patcher.applyPatch(OdexPatchActivity.this, apkPath);

            odexPath = patcher.targetOdex;
            if (patcher.errMessage != null) {
                this.errMessage = patcher.errMessage;
                throw new Exception(errMessage);
            }
      }

      @Override
      public void afterProcess() {
            if (errMessage == null) {
                Toast.makeText(OdexPatchActivity.this, "修补到 " + odexPath, Toast.LENGTH_LONG).show();
            }
      }
    }

    ////////////////////////////////////////////////////////////////////////////////
    // File selection

    @Override
    public void fileSelectedInDialog(String filePath,String extraStr,boolean openFile){
      apkPathEt.setText(filePath);
    }

    @Override
    public boolean isInterestedFile(String filename,String extraStr){
      return filename.endsWith(“。apk”);
    }

    @Override
    public String getConfirmMessage(String filePath,String extraStr){
      return null;
    }

    ///////////////////////////////////////////////// ///////////////////////////////

} [/ mw_shl_code]


截图

后续可能会有更多功能,比如可以hook植入classes2.dex什么的,梦想总是要有的 万一实现了呢
忘了放下载地址:http://t.cn/AiTitrUH


sumile 发表于 2019-8-7 13:27

幸运破解器也是用这种方式修补APK的,另外还要先修改service.jar破掉系统的核心签名验证。

小骚 发表于 2019-8-7 13:30

本帖最后由 小骚 于 2019-8-7 13:38 编辑

sumile 发表于 2019-8-7 13:27
幸运破解器也是用这种方式修补APK的,另外还要先修改service.jar破掉系统的核心签名验证。
没错,但是幸运破解器并没有开源吧,我东学西学终于完成这个过程了,接下来就是实现hookClassLoader实现插入代码,或者完成8.0以上的修补办法。虽然没测试过,但是应该不用核心破解,毕竟odex的校验是修复了的

吾爱不解 发表于 2019-8-7 12:57

谢谢大佬,前几天我正为这个事情发愁呢。

1595901624 发表于 2019-8-7 12:58

感谢大神提供新思路

jiang196771 发表于 2019-8-7 13:19

前排支持,我的手机root了哈哈

清浦刹那 发表于 2019-8-7 13:31

太强了!顶一个

不迷人 发表于 2019-8-7 13:40

前排 顶一个!

小骚 发表于 2019-8-7 13:56

不迷人 发表于 2019-8-7 13:40
前排 顶一个!

我咋就灌水了

klxn0-0 发表于 2019-8-7 14:00

这个方法对360等的加固应该很有用吧
页: [1] 2 3 4
查看完整版本: Odex修补:不修改apk实现破解