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

如何进行ODEX反编译实例

发布网友 发布时间:2022-12-29 14:53

我来回答

1个回答

热心网友 时间:2023-10-26 21:06

0x00 前言

使用开源工具出现问题而且很难在网上查找到解决方案的时候,最好的解决方法就是研究它的源码,因为那样能为我们提供更多的信息。

0x01 搭建smali/baksmali源码调试环境

首先我们在github上拉取smali/baksmali的源码

git clone https://github.com/JesusFreke/smali.git

可以看出该项目采用了grade自动化构建工具来编译源码的,因此我们可以在android studio中导入该项目,如下图所示:

生成的baksmali在如下目录下面:

上图中的Program arguments中,-a选项代表api level,可以通过如下属性获得:

报错如下:

Error occurred while disassembling classLandroid.support.v4.util.TimeUtils; - skipping class

java.lang.RuntimeException: Invalid methodindex: 32

atorg.jf.dexlib2.analysis.InlineMethodResolver$InlineMethodResolver_version36.resolveExecuteInline(InlineMethodResolver.java:175)

atorg.jf.dexlib2.analysis.MethodAnalyzer.analyzeExecuteInline(MethodAnalyzer.java:1512)

atorg.jf.dexlib2.analysis.MethodAnalyzer.analyzeInstruction(MethodAnalyzer.java:982)

atorg.jf.dexlib2.analysis.MethodAnalyzer.analyze(MethodAnalyzer.java:205)

atorg.jf.dexlib2.analysis.MethodAnalyzer.<init>(MethodAnalyzer.java:140)

atorg.jf.baksmali.Adaptors.MethodDefinition.addAnalyzedInstructionMethodItems(MethodDefinition.java:463)

atorg.jf.baksmali.Adaptors.MethodDefinition.getMethodItems(MethodDefinition.java:371)

atorg.jf.baksmali.Adaptors.MethodDefinition.writeTo(MethodDefinition.java:238)

atorg.jf.baksmali.Adaptors.ClassDefinition.writeDirectMethods(ClassDefinition.java:282)

atorg.jf.baksmali.Adaptors.ClassDefinition.writeTo(ClassDefinition.java:112)

atorg.jf.baksmali.baksmali.disassembleClass(baksmali.java:225)

atorg.jf.baksmali.baksmali.access$000(baksmali.java:55)

atorg.jf.baksmali.baksmali$1.call(baksmali.java:149)

atorg.jf.baksmali.baksmali$1.call(baksmali.java:147)

atjava.util.concurrent.FutureTask.run(FutureTask.java:266)

atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

atjava.lang.Thread.run(Thread.java:745)

我们直接锁定出错的地方,在上面出错信息标红色的地方,并且在抛出异常处下断点,我们可以判断出错原因是因为反编译smali指令execute-line时传入了一个未知的Dalvik虚拟机的内部java方法索引inlineIndex=32:

然后,我们把inline.txt作为-T选项的参数传递进去:

完美反编译。
http://www.mengzhe.com/Androidkaifa/3129.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 微信如何实名注册成功 如何注册? 3003详细资料大全 魅族17是2k屏吗 ps橡皮图章怎么檫得快一点,以前檫的很快,现在怎么变化的幅度很小,怎么调大一点 华为nova10Pro性能模式在哪设置 华为性能模式在哪打开 华为性能模式在哪 华为手机如何开启性能模式 史上最强炸弹 大伊万沙皇炸弹(威力是广岛原子弹的3800倍) 世界上威力最大的是沙皇核弹 沙皇炸弹是原子弹的3846倍 05年丰田霸道4000二手摩托质量怎么样 微信小额支付免密功能如何关闭 word里如何设置每行字数 古驰手表表盘摔在哪换 十二生肖中最笨的生肖有哪些生肖猪 家中放葫芦的作用 家中葫芦放哪里最旺财 酒葫芦挂在家里哪里招财 招财进宝葫芦挂在哪里 葫芦挂在家里哪里聚财 葫芦家里放哪个位置会旺财 java.lang.RuntimeException: Error in method:[Lorg&#47;kobjects&#47;crypt&#47;Crypt;.HPERM_OP (III)I] 大学近乎普及,为何却催生了一大批新的“文盲”? 如果全世界的人都放弃所有的娱乐开始认真学习、工作、研究,那么十年、百年以后人类会达到什么样的发展? 六年级下册第一单元作文<假文盲>作文,请热心网友帮帮我。要求,有题目,不少于500字,急急急!! 世界上最远的距离,是熟悉的人,渐渐变得陌生 DDR5内存条抢先开卖,到手先放小半年? 为什么长颈鹿的脖子特别长 针管笔过程图讲解,适合新手画的简笔画,你学会了吗? 联通176号段,会不会被手机拦截为诈骗电话 计划英语怎么说 计划怎么用英语翻译 2020年9月适合结婚的日子有哪些 2020年九月最佳的结婚吉日? 华馆副本怎么开 华f80s怎么开启vt虚拟化技术 为什么我打开电脑时显示华华硕标志很久 开机一直停在华硕商标哪里。要等一分钟才开启。。怎么解决 剑灵华彩宝盒怎么得 华彩宝盒开启条件介绍 清华同方笔记本如何开启AHCI 养敌为患漫画一共有多少集 冬季老年人要注意保暖 教你几招很有效 陕西省合作医疗保险缴费