问题标签 [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 回答
808 浏览

android - Android 设备上的应用程序未安装错误

我正在尝试“逆向工程”一个 android 应用程序,无论你想怎么称呼它。无论如何,我将 apk 更改为 .zip,然后获取 classes.dex 文件,获取 smali 文件,更改一个 smali 文件,然后转换回 dex 并将其放回 zip,然后返回 apk。

有什么我想念的吗?以前可以用,以前也用过,现在突然不行了。它只是说“未安装应用程序”。是因为安卓更新吗?或者是什么...?

0 投票
1 回答
4858 浏览

java - 如何修改smali代码以删除java代码中的1行

我想删除下面java代码中的第580行和第581行。这个文件在android设备的system/framework/services.jar中,所以我做的步骤是:

  1. 将jar反编译为smali

  2. 修改smali文件

  3. 将smali文件重新编译为dex文件

  4. 将其打包到 services.jar 中。

  5. 将services.jar推送到安卓手机

    问题在第2步,如何更改smali文件,我试图删除:line580和它下面的代码,但它不起作用,编译时抛出了一个nullPointerExecption......我可以看到/错误/在jd-gui工具有人请给我一些建议,我对smali完全陌生,在此先感谢。

java代码是:

反编译后的smali代码:

0 投票
1 回答
417 浏览

android - 移植时在警报中强制关闭

我试图通过使用 apktool 反编译来移植 SemcClock.apk(从 api 19 到 api 18)但是遇到了一些 fc。警报设置正确,但在警报时间它强制关闭。

日志猫

警报接收器.smali

希望我可以移植它!谢谢

0 投票
0 回答
817 浏览

android - 在修改 .smali 文件时,在特定代码点注入一些代码崩溃

我有个问题。我正在尝试将一些代码注入特定的代码点。差不多了,代码注入成功了。

但是在“com/google/ads/e”包中的“a”方法中代码注入失败。代码点在':goto_2''return v0'之间。

此时,像'const/4 v1, 0x1'这样的代码是可以的,但是像'const-string v1, "aaa"', 'new-instance v1, ~', 'sget v1, ~'这样的其他代码在崩溃时会崩溃应用程序正在运行,尽管 v1 不影响保留代码。

这个问题似乎与监视器指令相关。但我不知道为什么会出现这个问题。

0 投票
2 回答
3087 浏览

android - 解释和理解 smali。有人可以帮我翻译吗?

我正在我的 android 设备上进行试验,尝试使用应用程序代码,这样我就可以同时学习它。但我几乎被困在如何编辑 smali 代码上。对于只学习过 OOP 语言的人来说,这并不是那么直接。

所以这是我的 smali 代码:

这是等效的java代码:

现在我想保持简单,只需在 Java 中的参数“MyProcessor.l”IE 中放置一个常量:

我尝试了一些不同的方法,例如:

但是我遇到了编译错误,所以这显然是错误的。此外,我并没有真正理解我在做什么以及为什么要做我所做的。有人可以带我完成这里的逻辑步骤吗?非常感谢。

0 投票
1 回答
3950 浏览

java - java - 如何将一些东西从java文件添加到smali文件?

我会尽量说清楚:) 我想在应用程序中添加一个活动(让我们称之为 X 不要混淆),以便在应用程序启动时执行此操作:

  • 首先,启动我的活动 X 并显示包含按钮的布局。
  • 按钮的 OnClickListener 启动原始应用程序的主要活动。

我在一个 eclypse 项目中有活动 X,所以我可以将我的 java 文件转换为 smali。我有 smali 文件中的应用程序 + 一个 yml 文件(通过 backsmaling)。

如何将应用程序的主要活动转变为正常活动?如何将我的活动 X 添加到应用程序?smali文件夹的哪个文件夹?我需要更改 yml 文件中的某些内容吗?xml 文件会发生什么?

任何形式的帮助将不胜感激!:)

0 投票
0 回答
2373 浏览

android - 在 smali 代码中插入方法调用

我想将以下方法调用“send()”添加到 smali 方法中:

send() 是当前类的方法。X 是当前类名的通配符。现在我有两个未解决的问题:

  1. 为什么invoke-direct需要注册p0?我认为这是一个参数。

  2. 我是否考虑了 p0 寄存器?如果我只是保留它,是否有可能这个附加代码会使整个应用程序无法编译?如果是这样,我如何找出必须使用哪个寄存器?

我想将此方法调用添加到任意方法。我不知道方法结构,也无法预测任何寄存器的使用情况。因此我需要确切地知道上面代码中的 p0 是否可以改变以及在什么条件下改变。

我提供一个简单的例子来强调我的意图:

假设我们有这种方法,它只读取保存在智能手机上的联系人:

我编写了一个解析器,它自动从 .apk 文件中提取此代码。现在我想通过添加上层方法调用来扩展方法功能。

在这种情况下,我可以简单地在开头添加调用。唯一的区别出现在第 13 行(见评论)

直到知道我只是在.prologue之后添加方法调用。但我确信这种行为并不总是有效。有没有“完美”的地方来添加电话?我可以总是在“invoke-direct”中使用p0吗?或者我如何找出可以使用的寄存器?


问题:我可以总是在“invoke-direct”中使用p0吗?或者我如何找出可以使用的寄存器?

答案:“非静态方法的第一个参数始终是调用该方法的对象。” (链接见第一条评论中的打击)。由于我的方法不是静态的,我可以始终使用 p0

现在我只需要知道在哪里放置方法调用。

0 投票
1 回答
2939 浏览

android - 反编译 Android 应用程序的要求?

晚上好,我知道这个主题在 StackOverFlow 上很常见,但我的问题有点不同,我在整个 WEB 上找不到任何解决方案!;)

所以这是我的问题:

“允许 Apktool 反编译应用程序的构建要求是什么(在 Eclypse 上)?”

我做了一些测试,但找不到任何规则......例如,我构建了一个空应用程序(我刚刚创建它并将其导出到 apk 文件中),构建选项是:

最低:API 14,Android 4.0

目标:API 14,Android 4.0

编译:API 14,Android 4.0

而且我无法反编译apk...无论如何,我无法反编译我的任何应用程序!我必须在构建选项中进行哪些更改?我在 Apktool 1.4.3 和 2.0.0 上进行了测试,而且 proguard 没有被激活。此链接表示构建高于 21.1.1 的版本可能有问题,但它已在 ApkTool 2.0.0 中修复... https://code.google.com/p/android-apktool/issues/detail?id =680

错误日志:

对于 ApkTool 1.4.3:

对于 ApkTool 2.0.0 :

感谢所有愿意帮助我的人:)我爱你们!

0 投票
1 回答
369 浏览

android - Dalvik 字节码中的“入”和“出”是什么?

在 dex 代码中(例如,由 dexdump 工具生成),对于每个方法定义,除了“寄存器”、“insns 大小”等其他元数据之外,我还会看到“ins”和“outs”。

我正在检测 dex 代码以引入新的寄存器。仪器出现故障,我怀疑我可能必须根据我添加的新寄存器的数量来更改“输入”和“输出”值。

所以我的问题是:那些“进”和“出”代表什么?

(仅供参考:我为此使用 dexlib2。)

0 投票
1 回答
2600 浏览

android - Smali:增加寄存器数量

我需要一个额外的寄存器来在 smali 方法中存储一个字符串。我知道 smali 代码中的寄存器逻辑(请参阅https://github.com/JesusFreke/smali/wiki/Registers),但我仍然想知道如何归档增加的寄存器。

假设我有一个.locals n的方法。现在我想要.locals n+1。首先,我想迭代该方法并将每个 v 寄存器(v0 -> v1,v1 -> v2)加 1。然后 v0 将是我的新寄存器,我不会破坏任何现有数据。此外,我保持 p 和 v 寄存器之间的对齐。

不幸的是,这种简单的方法会导致无法编译代码。我不知道为什么。我错过了什么?