我已经在android studio中建立了一个针对android api 26的hello-world项目。 我想用两行额外的内容来修改主函数的smali代码,由于缺乏对smali文件的经验,我感到沮丧。所以到目前为止,我的步骤是:
编译apk
apktool d myApp.apk
找到MainActivity.smali文件。
这是MainActivity.smali的未修改版本:
.class public Lcom/example/myapplication4/MainActivity;
.super Landroidx/appcompat/app/AppCompatActivity;
.source "MainActivity.java"
# direct methods
.method public constructor <init>()V
.locals 0
.line 7
invoke-direct {p0}, Landroidx/appcompat/app/AppCompatActivity;-><init>()V
return-void
.end method
# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
.locals 1
.param p1, "savedInstanceState" # Landroid/os/Bundle;
.line 11
invoke-super {p0, p1}, Landroidx/appcompat/app/AppCompatActivity;->onCreate(Landroid/os/Bundle;)V
.line 12
const v0, 0x7f09001c
invoke-virtual {p0, v0}, Lcom/example/myapplication4/MainActivity;->setContentView(I)V
.line 13
return-void
.end method
这是我注入文件失败的尝试(称为库-> /lib/x86/frida-gadget.so )。 注意,我只显示修改后的部分(“构造器”部分)
# direct methods
.method public constructor <init>()V
.locals 0
const-string v2, "frida-gadget"
invoke-static {v2}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
.line 7
invoke-direct {p0}, Landroidx/appcompat/app/AppCompatActivity;-><init>()V
return-void
.end method
正确重新编译并安装到设备后,该应用程序在激活后立即崩溃。
我猜想.locals
部分必须进行相应的修改,但是我所做的任何尝试都以惨败告终-如果有人可以举例说明我所缺少的内容,我将非常喜欢! <3