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

标签 android json reverse-engineering smali

我正在我的 Android 设备上进行实验,尝试使用应用程序代码,以便我可以同时学习它。 但我对如何编辑 smali 代码非常困惑。 对于只学习过 OOP 语言的人来说,这并不是那么简单。

这是我的 smali 代码:

const-string v0, "get_value_one"
invoke-virtual {p0, v0}, Lorg/json/JSONObject;->getInt(Ljava/lang/String;)I
move-result v0
iput v0, v2, Lcom/breakapp/dd/mymod/Processor;->l:I

这是它的等效 java 代码:

Processor MyProcessor = new Processor();
try { 
    MyProcessor.l = paramJSONObject.getInt("get_value_one");
    return MyProcessor;  
} catch (Exception e) { }    
return MyProcessor;

现在我想让事情变得简单,只需在参数中添加一个常量 Java 中的“MyProcessor.l”IE:

MyProcessor.l = 10;

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

iput v0, v2, Lcom/breakapp/dd/mymod/Processor;->l:10

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

最佳答案

我也是 Android Reversing 的新手,我花了一些时间搜索 Smali 代码的简单理解,发现了这个:

注意类结构是L;

Lcom/breakapp/dd/mymod/Processor;->l:I

原始java文件名

.source "example.java"

这些是类实例变量

.field private someString:Ljava/lang/String;

这会将字符串值分配给 v0

const-string v0, "get_value_one"


实际上并不直接使用决赛,因为对它们的引用被值本身原始备忘单所取代:

V - void、B - 字节、S - 短整型、C - 字符、I - 整型

J - 长整型(使用两个寄存器),F - 浮点型,D - double 型

.field public final someInt:I  # the :I means integer
.field public final someBool:Z # the :Z means boolean

取自:Android Cracking !

关于android - 解释和理解 smali。有人可以帮我翻译吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26450308/

相关文章:

android - 收到消息时,Urban Airship 通知不会显示在 Android 设备中

用于暂停/恢复另一个音乐播放器应用程序的音乐的 Android 应用程序

c# - JSON 值无法转换为 System.Int32

javascript - React - 分段显示文本消息

dart - 将 .dart.snapshot 反编译成 Dart 源码

java - Android 证明复制我的源代码

java - 控制音频音量,范围从0到99

android - 无法从 ContactsContract 获取电子邮件地址

java - 如何解决com.fasterxml.jackson.databind.JsonMappingException?

c++ - GCC C++ 异常处理实现