#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, чтобы добавить свои новые регистры, спасибо вам за вашу помощь 🙂