吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12998|回复: 36
上一主题 下一主题
收起左侧

[Android 原创] Odex修补:不修改apk实现破解

[复制链接]
跳转到指定楼层
楼主
小骚 发表于 2019-8-7 12:29 回帖奖励
本帖最后由 小骚 于 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

核心代码:[mw_shl_code=java,true]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


免费评分

参与人数 14吾爱币 +22 热心值 +13 收起 理由
tail88 + 1 谢谢@Thanks!
yiwai2012 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
70470400 + 1 + 1 热心回复!
多幸运遇见baby + 1 + 1 用心讨论,共获提升!
qtfreet00 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
7lu + 1 + 1 支持大佬
Likey + 2 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
tanghengvip + 1 + 1 每篇都是干货
schoolyears + 1 + 1 积分给有用的人
klxn0-0 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
不迷人 + 1 + 1 请勿灌水,提高回帖质量是每位会员应尽的义务!
TIS有趣的灵魂 + 1 + 1 我很赞同!
1595901624 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
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
3#
1595901624 发表于 2019-8-7 12:58
感谢大神提供新思路
4#
jiang196771 发表于 2019-8-7 13:19
前排支持,我的手机root了哈哈
7#
清浦刹那 发表于 2019-8-7 13:31
太强了!顶一个
8#
不迷人 发表于 2019-8-7 13:40
前排 顶一个!
9#
 楼主| 小骚 发表于 2019-8-7 13:56 |楼主

我咋就灌水了
10#
klxn0-0 发表于 2019-8-7 14:00
这个方法对360等的加固应该很有用吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表