亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將代碼添加到 smali 源

將代碼添加到 smali 源

眼眸繁星 2022-07-27 16:33:14
我有一個相關來源的 smali 代碼:original_file.java:package com.android.commands.locksettings;import android.os.ResultReceiver;import android.os.ServiceManager;import android.os.ShellCallback;import com.android.internal.os.BaseCommand;import com.android.internal.widget.ILockSettings;import java.io.FileDescriptor;import java.io.PrintStream;public final class LockSettingsCmd extends BaseCommand {    private static final String USAGE =            "usage: locksettings set-pattern [--old OLD_CREDENTIAL] NEW_PATTERN\n" +            "       locksettings set-pin [--old OLD_CREDENTIAL] NEW_PIN\n" +            "       locksettings set-password [--old OLD_CREDENTIAL] NEW_PASSWORD\n" +            "       locksettings clear [--old OLD_CREDENTIAL]\n" +            "\n" +            "locksettings set-pattern: sets a pattern\n" +            "    A pattern is specified by a non-separated list of numbers that index the cell\n" +            "    on the pattern in a 1-based manner in left to right and top to bottom order,\n" +            "    i.e. the top-left cell is indexed with 1, whereas the bottom-right cell\n" +            "    is indexed with 9. Example: 1234\n" +            "\n" +            "locksettings set-pin: sets a PIN\n" +            "\n" +            "locksettings set-password: sets a password\n" +            "\n" +            "locksettings clear: clears the unlock credential\n";    public static void main(String[] args) {        (new LockSettingsCmd()).run(args);    }    @Override    public void onShowUsage(PrintStream out) {        out.println(USAGE);    }輯上面的 smali 文件并將代碼添加到main函數中所以我在一個新的 java 文件中編寫了相同的代碼并將其編譯為class文件,javac然后使用dx.jar將其轉換為classes.dex并重新編譯dex文件并獲取 smali 代碼注入但每次a 添加文件破解的代碼并且永遠不會工作。
查看完整描述

1 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

當你編輯 smali 代碼時,你應該小心處理寄存器。my_code的 main 方法有 5 個寄存器(即 4 個本地和 1 個參數),而original_file' 的 main 方法有 2 個寄存器(即 1 個本地和 1 個參數)。在添加my_codeto之前original_file,您應該決定需要多少寄存器。在這個例子中,5 個寄存器(即 4 個本地和 1 個參數)就足夠了。


最終main方法(沒有.line和.param指令):


.method public static main([Ljava/lang/String;)V

    .registers 5


    .prologue

    array-length v1, p0


    const/4 v0, 0x0


    :goto_2

    if-ge v0, v1, :cond_e


    aget-object v2, p0, v0


    sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;


    invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V


    add-int/lit8 v0, v0, 0x1


    goto :goto_2


    :cond_e

    new-instance v0, Lcom/android/commands/locksettings/LockSettingsCmd;


    invoke-direct {v0}, Lcom/android/commands/locksettings/LockSettingsCmd;-><init>()V


    invoke-virtual {v0, p0}, Lcom/android/commands/locksettings/LockSettingsCmd;->run([Ljava/lang/String;)V


    const/4 v0, 0x0


    invoke-virtual {v0, p0}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V


    return-void

.end method


查看完整回答
反對 回復 2022-07-27
  • 1 回答
  • 0 關注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號