问题标签 [smali]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android上有apktool吗?我想在 Android 应用程序中组装“.smali”并制作新的“.apk”
我想在 Android 应用程序中组装“.smali”并制作新的“.apk”。我没有太多时间来做这件事,所以我必须使用一些已经存在的源代码。
有一个可以在 Windows/Mac OS X/Linux 上构建的 Apktool 项目,但我想在 Android 上构建它。
我还尝试将“apktool.jar”作为外部库包含在 Eclipse 的 Android 应用程序项目中,但失败了。
经过一番研究,似乎更清楚我只需要在 Android 上运行以下两个项目:
- Smali(独立项目)
- JarSigner(来自OpenJDK)
而且,Apktool 不是必需的。
这个项目有我需要的:
java - .catchall 是否用于在 smali 中为 Dalvik 字节码指示 finally 子句?
我注意到当finally
java代码中有子句时,总是会.catchall
生成识别finally
块或使用.catchall
标签内联它,但我没有找到任何关于是否是case或更多解释的在线信息,有人知道吗这个?
dalvik - DalvikVM如何处理切换和尝试smali代码
我正在尝试学习 smali,但我有一些问题无法通过谷歌搜索找到。
1)我创建了一个简单的测试用例来更好地解释自己
.catch 语句:这两个参数是指从该标签获取该标签并捕获它(两个标签之间的代码)还是意味着从 :try_start_0 开始执行 try 直到它到达 :try_end_0 (允许 goto 跳转执行不在两个标签内的代码)?
尝试的标签是否始终采用 try_start_%d 格式,或者它们可以是任何标签吗?
2)另一种情况
switch 语句:是否要求 switch 语句位于 switch 数据和 switch 调用之间?又是固定标签的命名还是为了方便起见?
3)如果标签可以不同,baksmali 会生成带有不同标签的 smali 代码吗?
4)反编译dex时不总是显示的可选行是什么?
我知道 .parameter 和 .line 是可选的,但哪些可能不存在?
先感谢您。
android - 直接调用是否真的调用实例化对象中定义的方法?
我有一些测试代码,这是一个ConcreteClass
继承AbstractClassForInterface1
. 在为构造函数生成的 smali 代码中ConcreteClass
:
p0
实际上是 type 的实例化对象ConcreteClass
,因为它来自实例化:
并且很容易理解,对象v0
有方法Lorg/ucomb/ConcreteClass1;-><init>()V
,
然后在正文中,为什么要像这样使用invoke-direct
onp0
来调用超类的构造函数:
invoke-direct {p0}, Lorg/ucomb/AbstractClassForInterface1;-><init>()V
?
不invoke-direct
应该在没有虚拟方法解析的情况下调用方法吗?
android - 为什么调用种类/范围指令中指示的寄存器数量与参数类型的数量不匹配?
在以下示例字节码中:
寄存器的范围表示寄存器v0
, v1
, v2
, v3
, v4
, v5
, 是传递给方法的,但是为什么数量和表示的类型的数量不一样,只有2个??
调用种类/范围和普通调用种类之间有区别吗?
smali - 法律标签名称 smali
smali 标签的法定名称是什么?
我知道a-z
并且_
是合法的并且\n
不明显,但是关于标签名称有什么规则吗?
我知道字节码不使用标签,dalvik 汇编器(smali)将其转换为文件中的位置,所以这并不重要,但是 smali 会接受什么作为标签名称?
java - Android .java 文件正在通过的完整格式链列表是什么?
我刚刚注意到 .smali 文件,.dex 文件被编译成该文件。我希望能够跟踪我的 .java 文件正在经历的所有转换。
首先,我想知道从创建 .java 文件到我安装的 .apk 执行的所有转换。
其次,我如何才能真正看到并打开在这两者之间创建的所有文件?
java - smali 中没有 java 导入?
我今天在android源代码中做了一些实验。
让我说完整的事情,我从android源编译framework.jar并对其进行反编译并生成smali源并将其放在一边。然后从 CyanogenMod 存储库中,我向 android 源代码添加了一个功能的提交,并一次又一次地编译了 framework.jar 反编译的 smali 源代码,以查看 smali 方面的变化,以便我可以将它们移植到我的 ROM 中。
我要移植的功能需要导入某些类,例如 import dalvik.system.VMRuntime 和额外编码以使用这些导入的类。所以现在我的问题是,我只能看到额外的编码,即在 smali 代码中使用这些类,但看不到那些导入。因此,当我仅移植 smali 代码时,我在 logcat 中得到 java.lang.NoSuchMethodError,这表明它无法找到该方法。原因很清楚,因为没有导入必要的类,那么如何在 smali 代码中做到这一点?我认为在 smali 中没有办法做到这一点,因此新引入的方法不起作用。
有什么可行的解决方案吗?
android - 使用 smali 将 Tapit 添加到使用 GameSalad 制作的 APK 中?
只是为了进一步澄清我的问题,我需要做的是将 Tapit SDK 实现到 GameSalad 制作的 android APK。
我已经知道了整个过程,我唯一的问题是让广告展示。
为了让您快速了解我的方法,我使用 apktool 将 apk 反编译为 smali,我还有一个可以反编译的 tapit apk,因此我可以只拥有 smali 代码,然后将其放入我需要的活动中它在。我确保我导入 tapit,在 com 下添加 lib 文件夹,编辑 android manifest xml,然后重新编译,然后辞职。
该应用程序不再崩溃,但它也没有显示我的广告。
我知道可以以这种方式编辑 apk,而且我也知道 dex2jar 并在 jasmine 中对其进行编辑,但我也无法让它以这种方式工作。
如果有人对此有任何见解,我将不胜感激。
谢谢你。
android - smali if 结构修改
我需要将 smali 代码中的“if statements”修改为条件为真,在 java 中可能是这样的:
转换成:
如果可以用smali代码做吗?有谁知道应该如何在 smali 代码中修改这个结构?非常感谢。