问题标签 [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.

0 投票
1 回答
4877 浏览

java - 将 .class 文件转换为 smali 文件并再次打包 .apk

我正在通过 Stack Overflow 问题将DEX 反编译成 Java 源代码。我成功地能够反编译 apk 文件,并对 Java 代码进行了一些更改。

我成功地将它们转换为 smali 文件,以便 apktool 可以重新打包应用程序。但它给了我未定义的错误。我用了一个你好,世界!暂时举例。

可能吗?还是我走错地方了?有没有可能的替代方法?

0 投票
1 回答
326 浏览

android - smali文件的命名方案是什么

我真的对 smali 文件的命名感到困惑。

传统上,类a将被命名为a.smali,而内部类ba被命名为a$b.smali

但是刚才我遇到一个类f,它的文件是f.2.smali,同时在同一个目录下我也看到很多文件,比如a.2.smalib.2.smali...,它们的相似之处在目录下A.smali,,,B.smali也存在(以下是目录的截图):

Smali 文件名示例

所以我很好奇是否有任何标准规则可以告诉反编译Android应用程序时smali文件名如何?

谢谢

0 投票
1 回答
10273 浏览

android - android中invoke-virtual和invoke-direct有什么区别

invoke-virtual是调用虚方法,而说invoke-direct是直接方法。

但是我不清楚什么是“虚拟方法”,什么是“直接方法”?

换句话说,调用什么样的方法,会调用什么样的invoke-virtual方法invoke-direct

任何人都可以举一些具体的例子吗?

0 投票
2 回答
2612 浏览

android - "smali" 语法规范 | smali 日志注入

是否有任何可用于 smali 代码的语法规范?我正在尝试使用 smali 代码,而我缺少的一件事是 smali 中的某些方法具有 .prologue 部分而有些则没有。不幸的是,wiki似乎没有关于 smali 语法的信息。以前有没有人发现自己处于这种情况?任何建议/解决方案将不胜感激。

EDIT1:我的目标是将日志消息添加到应用程序所有活动的 onResume 方法的开头。

EDIT2:我正在使用 ANTLRv4.1 解析器来解析我的 smali 文件,我从 smaliLexer 获得了一个 CommonTree(解析树)和一个 TokenStream。现在是为日志指令创建令牌并更改解析树,然后生成 classes.dex 文件是正确的方法吗?到目前为止,我还没有找到更改 TokenStream 的方法,并且无法从更改后的 ParseTree 生成 dex 文件。

0 投票
1 回答
1757 浏览

android - 将全局硬件密钥侦听器的代码放在哪里?

我正在尝试将硬件密钥支持破解到现有应用程序中,但我意识到我对 Android 应用程序开发知之甚少,无法继续。
我可以使用 APKtool 毫无问题地反编译和重新编译应用程序,并且我自己制作了一个带有硬件密钥支持的小应用程序来提取已编译的 smali 代码。作为参考,该部分如下所示:

如果我想让应用程序“全局”监听硬件键(即在应用程序的每个活动、窗口、你有什么,我应该把 onKeyDown 代码放在哪里?我是把它放在一个活动中(如果是的话,是哪一个),放在所有活动中,还是完全放在其他地方?

编辑:我意识到“全球”在这里有点模棱两可。我的意思是整个应用程序,而不是整个系统。

0 投票
1 回答
411 浏览

antlr4 - antlr4 的 smali 语法文件“.g4”

此处提供的 smali 语法文件适用于 antlrv3。我找不到 smali 的任何 .g4 文件。这个 .g4 是如何创建的?有没有办法将 antlrv3 .g 文件转换为与 antlrv4 兼容的文件?

0 投票
2 回答
11552 浏览

java - smali 代码语法中的“.line”是什么意思?(Android-Smali 代码)

请看一下这个问题

反编译的 smali 代码包含类似.line 3 or的内容.line 7

我不明白.line应该是什么,请详细说明用法。

0 投票
1 回答
470 浏览

eclipse - 为 Eclipse 添加 smali 支持

我正在尝试使用 eclipse 编辑一个 smali 项目。理论上,这应该允许我对 smali 使用整个 java 魔法(打开类定义、调用层次结构等)。

是否已经有某种对 Eclipse 的 smali 支持?

由于我没有找到任何东西,我目前正在考虑使用 xtext 自己构建一个。(但我对 xtext 很陌生。)

我发现 smali 编译器本身是使用 antrl3 编写的,相应的语法描述看起来我不需要从头开始指定 xtext 语法。

有没有一种好方法可以将此描述用作 xtext 的基础?

或者在这种情况下是否有比 xtext 更好的方法?

0 投票
1 回答
1471 浏览

android - Smali:All register args must fit in 4 bits error

当我使用 smali 对我的 mod 文件进行索引时,我收到了这个错误:

patch\android\view\Choreographer.smali[1392,4] 所有寄存器参数必须适合 4 位

我定位到第 1392 行,发现:

有人知道我该如何解决吗?我已经阅读了这篇文章http://forum.xda-developers.com/showthread.php?t=733275,但它没有帮助,因为这条线没有使用任何寄存器。

0 投票
1 回答
12241 浏览

java - 修改 Smali 中的现有方法

我一直在 smali 中寻找一个简单的方法(来自这里的 Android),并且我想知道如何对它做一些简单的事情,比如 return false。我一直在尝试通过与 Java 对应的一些示例进行比较来理解它,我想我了解了它的大部分工作原理,但是我所做的任何更改似乎都不顺利。

目前,在Java中,方法是:

在 smali 中是:

在上面的上下文中,我将如何修改该方法以仅执行与 Java 等效的操作return false;?从我所看到的来看,0x0这是错误的,但只是在编译 smali 时返回导致问题(期待 REGISTER?)所以我想知道我到底需要做什么。

一个解决方案,以及一个解释,将不胜感激!不是为了什么特别的,我就是喜欢看这个东西。