原创|Android逆向调试的打印调试信息定位代码位置的一个小技巧

时间:2022-01-16 15:31:45

Android逆向调试的打印调试信息定位代码位置的一个小技巧

                const-string v1, "\u0048\u0065\u006c\u006c\u006f\u0057\u006f\u0072\u006c\u0064\u0021"       
		#此Unicode代码对应HelloWorld!

		iget-object v3, p0, Lcom/droider/network/MainActivity;->txt_info:Landroid/widget/TextView;

		const/high16 v4, -0x10000

		invoke-virtual {v3, v4}, Landroid/widget/TextView;->setTextColor(I)V

		iget-object v3, p0, Lcom/droider/network/MainActivity;->txt_info:Landroid/widget/TextView;

		invoke-virtual {v3, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V 


              1、 讲上述代码插入apk反编译得到的smali代码中,再编译安装运行,当app运行到这里时便会在屏幕中间显示一串文本“HelloWorld!”,也可以将想要输出的调试信息字符串赋给寄存器v1来打印所需要的信息。字符串是存储在寄存器v1中的。


              2、 在使用上述代码的时候一定要在理解smali语言的情况下根据自己的实际需要来微调。一定要看有没有v1,v3,v4,p0相同寄存器被重复使用的情况


              3、给寄存器v1赋值的时候直接使用汉字也可以,记得加上双引号,java连变量名都可以使用汉字,还有什么是不可以的呢。