如何正确将功能添加到.smile文件?

时间:2019-05-23 13:26:40

标签: android

我已经在android studio中建立了一个针对android api 26的hello-world项目。 我想用两行额外的内容来修改主函数的smali代码,由于缺乏对smali文件的经验,我感到沮丧。所以到目前为止,我的步骤是:

  1. 编译apk

  2. apktool d myApp.apk

  3. 找到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

0 个答案:

没有答案