问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何修复使用NOP指令抹去关键方法的DEX文件

发布网友 发布时间:2022-04-22 07:09

我来回答

1个回答

热心网友 时间:2022-06-17 06:24

首先,我们使用某些反编译工具打开一个classes.dex文件,
我们可以看到每个函数的代码全部被抹去了。接下来,我们先使用010 Editor来解析这个Dex文件,

看来010 Editor无法解析classes.dex文件,原因可能在于Dex文件中的某些字段已经被修改过。这些字段可能包含某些偏移量信息,用来标识文件内部的偏移量。如果偏移量的值超过了DEX文件的大小,会导致文件解析错误。
该Dex文件的大小为0x2B2DD8。
我写了一个C++程序来解析Dex文件,检查其中不正常的字段,部分输出结果如图3所示。

我们可以看到DexCode结构中,“debugInfoOff”字段的值不正常,超过了文件本身的0x2b2dd8大小。此例中,这些不正常的debugInfoOff字段取值范围在0x3ffff30到0x4000000之间。

为使010 Editor能正确解析这个Dex文件,我修复了文件debugInfoOff字段的值。我以MainActivity类中的“OnCreate”方法为例,演示修复过后的Dex文件在010 Editor中的解析结果。

接下来我将debugInfoOff的值修改为0。insns_size字段代表了代码中指令的长度,每一条指令包括2个字节,因此代码的长度为0x76。“OnCreate”方法的具体代码以“0E 00”字节码开始,其余部分全部为NOP指令。“0E 00”字节码代表的是void返回类型。
现在的问题是,如何获取该方法的真正字节码?图5中,某些关键方法已经被NOP指令抹去了。程序准备调用某个方法前,会先对该方法中的字节码进行解密,调用完毕后程序会使用原始的NOP字节码重新替换填充。
在Dalvik虚拟机中,方法在调用时其字节码必须是正确的。换句话说,如果某个方法不处于调用状态,那么它的字节码可能是错误的。这个样本充分利用了这一点,实现了对方法的动态解密调用。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 科研成果包括哪些内容 我是1993年10月13号出生的,请大家帮忙占卜我的运势 卜卦得挂兑为泽,问以后运势,前途,求解 研究成果怎么写 ? 天蝎座资料,占卜,运势 对以往研究成果的分析和评述 星座运势和占卜算术有什么不同? 六爻占卜2020年运势? 我是1994年3月3日出生的我想占卜运势 安卓里的dex文件是什么? 周易占卜运势得到了噬卦。 android dex文件 怎么打开 星座运势是根据什么测算的? 安卓系统的.dex文件为什么运行不了?不是说是可执... ios能运行dex文件吗? dex是什么格式,用什么来打开的? 卜卦占命.运势.生辰八字算命算命 如何制作dex文件 天地否卦如何占卜运势 安卓手机里的DEX文件可以删除么? 怎样辨别玻璃杯是否耐高温 怎么让dex文件变成odex文件dexopt 科研成果论文怎么写,给个提纲 怎样在电脑上打开DEX文件? 谁知道科研成果论文怎么写,给个提纲 win10怎么打开dex文件 如何反编译 android 中 /data/dalvik-cache/arm 下... 近年来生物学领域重大的科研成果或发现 请问怎么鉴别有机玻璃材料的质量 玻璃种鉴定? 华罗庚在数学领域的主要贡献及科研成果 地弹簧门开不到直角怎样调整? 水晶和玻璃辨别最简单的方法? 怎么辨别水晶和玻璃制品? 琉璃和玻璃的区别及鉴定? 如何给做好的GIF调色 如何鉴定玻璃杯的好坏 这种GIF调色是怎么做出来的? 请问有给GIF动图加滤镜调色,加边框的手机App吗?... GIF怎么批量给每一帧调色修图?