Smali — Вывод переменной в виде строки на консоль

#android #console #smali

#Android #консоль #smali

Вопрос:

хорошо, итак, я искал и пытался понять код smali, который у меня есть, но я не могу разобраться в этом, любая помощь была бы очень ценной…

итак, у меня есть этот код, и я хочу иметь возможность распечатать.строка 6 V2 в .method private S() выводится на консоль в виде строки..

как бы я это сделал?? Спасибо

КОД НИЖЕ :

 .method private S()V
.locals 5

.line 1
new-instance v0, Lcom/loopj/android/http/AsyncHttpClient;

invoke-direct {v0}, Lcom/loopj/android/http/AsyncHttpClient;-><init>()V

.line 2
new-instance v1, Lcom/loopj/android/http/RequestParams;

invoke-direct {v1}, Lcom/loopj/android/http/RequestParams;-><init>()V

.line 3
new-instance v2, Le/c/c/e;

invoke-direct {v2}, Le/c/c/e;-><init>()V

new-instance v3, Lcom/myfirstapp/util/Json;

invoke-direct {v3}, Lcom/myfirstapp/util/Json;-><init>()V

invoke-virtual {v2, v3}, Le/c/c/e;->x(Ljava/lang/Object;)Le/c/c/j;

move-result-object v2

check-cast v2, Le/c/c/m;

const-string v3, "method_name"

const-string v4, "get_myuserinfo"

.line 4
invoke-virtual {v2, v3, v4}, Le/c/c/m;->q(Ljava/lang/String;Ljava/lang/String;)V

.line 5
iget-object v3, p0, Lcom/myfirstapp/interfaces/LiveTvItemFragment;->y:Ljava/lang/String;

const-string v4, "cat_id"

invoke-virtual {v2, v4, v3}, Le/c/c/m;->q(Ljava/lang/String;Ljava/lang/String;)V

.line 6
invoke-virtual {v2}, Le/c/c/j;->toString()Ljava/lang/String;

move-result-object v2

invoke-static {v2}, Lcom/myfirstapp/util/Json;->toBase64(Ljava/lang/String;)Ljava/lang/String;

move-result-object v2

const-string v3, "data"

invoke-virtual {v1, v3, v2}, Lcom/loopj/android/http/RequestParams;->put(Ljava/lang/String;Ljava/lang/String;)V

.line 7
sget-object v2, Lcom/myfirstapp/util/e;->b:Ljava/lang/String;

new-instance v3, Lcom/myfirstapp/interfaces/LiveTvItemFragment$a;

invoke-direct {v3, p0}, Lcom/myfirstapp/interfaces/LiveTvItemFragment$a;-><init>(Lcom/myfirstapp/interfaces/LiveTvItemFragment;)V

invoke-virtual {v0, v2, v1, v3}, Lcom/loopj/android/http/AsyncHttpClient;->post(Ljava/lang/String;Lcom/loopj/android/http/RequestParams;Lcom/loopj/android/http/ResponseHandlerInterface;)Lcom/loopj/android/http/RequestHandle;

return-void
  

.метод завершения

Комментарии:

1. Запуск с Smali — непростая задача. Если вы хотите вставить код, лучший способ — написать очень маленькое тестовое приложение в AndroidStudio и добавить метод, содержащий только тот вызов, который вы хотите добавить. Затем скомпилируйте ее в APK и декомпилируйте с помощью apktool. Вы можете скопировать нужный вам вызов в исходный код, который у вас есть здесь. Просто адаптируйте регистры (например, v2), и если ваш код записывает в регистр, обязательно используйте регистр, который позже не понадобится. Кстати: если вы просто хотите увидеть версию v2 во время выполнения, возможно, будет проще внедрить Frida на корневом устройстве вместо изменения всего приложения.

2. огромное спасибо, я никогда не думал о том, чтобы написать тестовое приложение, лол … я не менял номер .locals, чтобы добавить свои новые регистры, спасибо вам за вашу помощь 🙂