问题标签 [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 设备上的应用程序未安装错误
我正在尝试“逆向工程”一个 android 应用程序,无论你想怎么称呼它。无论如何,我将 apk 更改为 .zip,然后获取 classes.dex 文件,获取 smali 文件,更改一个 smali 文件,然后转换回 dex 并将其放回 zip,然后返回 apk。
有什么我想念的吗?以前可以用,以前也用过,现在突然不行了。它只是说“未安装应用程序”。是因为安卓更新吗?或者是什么...?
java - 如何修改smali代码以删除java代码中的1行
我想删除下面java代码中的第580行和第581行。这个文件在android设备的system/framework/services.jar中,所以我做的步骤是:
将jar反编译为smali
修改smali文件
将smali文件重新编译为dex文件
将其打包到 services.jar 中。
将services.jar推送到安卓手机
问题在第2步,如何更改smali文件,我试图删除:line580和它下面的代码,但它不起作用,编译时抛出了一个nullPointerExecption......我可以看到/错误/在jd-gui工具有人请给我一些建议,我对smali完全陌生,在此先感谢。
java代码是:
反编译后的smali代码:
android - 移植时在警报中强制关闭
我试图通过使用 apktool 反编译来移植 SemcClock.apk(从 api 19 到 api 18)但是遇到了一些 fc。警报设置正确,但在警报时间它强制关闭。
日志猫
警报接收器.smali
希望我可以移植它!谢谢
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 不影响保留代码。
这个问题似乎与监视器指令相关。但我不知道为什么会出现这个问题。
android - 解释和理解 smali。有人可以帮我翻译吗?
我正在我的 android 设备上进行试验,尝试使用应用程序代码,这样我就可以同时学习它。但我几乎被困在如何编辑 smali 代码上。对于只学习过 OOP 语言的人来说,这并不是那么直接。
所以这是我的 smali 代码:
这是等效的java代码:
现在我想保持简单,只需在 Java 中的参数“MyProcessor.l”IE 中放置一个常量:
我尝试了一些不同的方法,例如:
但是我遇到了编译错误,所以这显然是错误的。此外,我并没有真正理解我在做什么以及为什么要做我所做的。有人可以带我完成这里的逻辑步骤吗?非常感谢。
java - java - 如何将一些东西从java文件添加到smali文件?
我会尽量说清楚:) 我想在应用程序中添加一个活动(让我们称之为 X 不要混淆),以便在应用程序启动时执行此操作:
- 首先,启动我的活动 X 并显示包含按钮的布局。
- 按钮的 OnClickListener 启动原始应用程序的主要活动。
我在一个 eclypse 项目中有活动 X,所以我可以将我的 java 文件转换为 smali。我有 smali 文件中的应用程序 + 一个 yml 文件(通过 backsmaling)。
如何将应用程序的主要活动转变为正常活动?如何将我的活动 X 添加到应用程序?smali文件夹的哪个文件夹?我需要更改 yml 文件中的某些内容吗?xml 文件会发生什么?
任何形式的帮助将不胜感激!:)
android - 在 smali 代码中插入方法调用
我想将以下方法调用“send()”添加到 smali 方法中:
send() 是当前类的方法。X 是当前类名的通配符。现在我有两个未解决的问题:
为什么invoke-direct需要注册p0?我认为这是一个参数。
我是否考虑了 p0 寄存器?如果我只是保留它,是否有可能这个附加代码会使整个应用程序无法编译?如果是这样,我如何找出必须使用哪个寄存器?
我想将此方法调用添加到任意方法。我不知道方法结构,也无法预测任何寄存器的使用情况。因此我需要确切地知道上面代码中的 p0 是否可以改变以及在什么条件下改变。
我提供一个简单的例子来强调我的意图:
假设我们有这种方法,它只读取保存在智能手机上的联系人:
我编写了一个解析器,它自动从 .apk 文件中提取此代码。现在我想通过添加上层方法调用来扩展方法功能。
在这种情况下,我可以简单地在开头添加调用。唯一的区别出现在第 13 行(见评论)
直到知道我只是在.prologue之后添加方法调用。但我确信这种行为并不总是有效。有没有“完美”的地方来添加电话?我可以总是在“invoke-direct”中使用p0吗?或者我如何找出可以使用的寄存器?
问题:我可以总是在“invoke-direct”中使用p0吗?或者我如何找出可以使用的寄存器?
答案:“非静态方法的第一个参数始终是调用该方法的对象。” (链接见第一条评论中的打击)。由于我的方法不是静态的,我可以始终使用 p0
现在我只需要知道在哪里放置方法调用。
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 :
感谢所有愿意帮助我的人:)我爱你们!
android - Dalvik 字节码中的“入”和“出”是什么?
在 dex 代码中(例如,由 dexdump 工具生成),对于每个方法定义,除了“寄存器”、“insns 大小”等其他元数据之外,我还会看到“ins”和“outs”。
我正在检测 dex 代码以引入新的寄存器。仪器出现故障,我怀疑我可能必须根据我添加的新寄存器的数量来更改“输入”和“输出”值。
所以我的问题是:那些“进”和“出”代表什么?
(仅供参考:我为此使用 dexlib2。)
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 寄存器之间的对齐。
不幸的是,这种简单的方法会导致无法编译代码。我不知道为什么。我错过了什么?