《Android 安全(三)》动态调试Smali

环境

  • Android Studio 3.3.2
  • SmaliIdea Plugin
  • 自己随手写一个Android应用
  • baksmali

操作

安装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”
  • 跳转到断点处,可执行单步调试
发布了159 篇原创文章 · 获赞 264 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/poorkick/article/details/88732082