《Android 安全(三)》动态调试Smali
环境
- Android Studio 3.3.2
- SmaliIdea Plugin
- 自己随手写一个Android应用
- baksmali
操作
安装SmaliIdea插件
- SmaliIDEA 插件
- 在线安装
编制测试应用
public class MainActivity extends AppCompatActivity {
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.tv_content);
Button button = findViewById(R.id.bt_change_text);
button.setOnClickListener(v -> {
count++;
textView.setText(String.format(Locale.CHINESE, "Tap %d", count));
});
}
}
打包成Apk文件
为了保证android:debuggable="true"
,我们打包成debug版本即可。或者手动在AndroidManifest.xml文件中设置也行。
反编译
baksmali d app-debug.apk -o ~/projects/myapp/src
启动程序并转发端口
-
启动测试程序主界面
adb shell am start -D -n cn.onlyloveyd.smali/cn.onlyloveyd.smali.MainActivity
-
启动“Android Device Monitor”,记住pid和后面8700端口,然后一定关闭Android Device Monitor
-
转发端口
导入工程至Android Studio
-
“New” -》“import Project”,选择刚才创建的工程目录
-
选择"Create project from existing sources"
-
一直继续直到“Finish”
-
设置“src"文件加为源文件
-
“Edit Configurations”并配置JDK
调试
- 执行“Run” -》 “Debug XXX”
- 跳转到断点处,可执行单步调试