美文网首页
android 动态调试

android 动态调试

作者: fantasy_learner | 来源:发表于2019-02-12 11:07 被阅读0次

    反编译以及打包 apk

    • 工具网盘地址
    • 反编译 :java -jar Apktool.jar d 22.apk
    • 修改 smail 或者 Manifest.xml | 在动态调试时需要使用
    • 打包 : java -jar Apktool.jar b 22 -o 22.apk | 22 是反编译产生的文件夹
    • 签名 : java -jar signapk.jar testkey.x509.pem testkey.pk8 22.apk signed.apk | *.pem 和 *.pk8 是 密钥文件

    生成密钥

    openssl genrsa -out tmpkey.pem 4096
    
    openssl req -new -ke tmpkey.pem -out tmprequest.pem
    
    openssl x509 -req -days 9999 -in tmprequest.pem -signkey tmpkey.pem  -out mykey.pem
    
    openssl pkcs8 -topk8 -outform DER -in tmpkey.pem -informPEM -out mykey.pk8 -nocrypt
    
    rm tmp*.pem
    

    smail 动态调试

    • 前提 :
        1. 系统属性 ro.debugable 为 1
        • 使用 Android AVD 生成的模拟器默认情况下 ro.debuggable 属性为 1
        • 使用谷歌安卓源码库AOSP编译出来的镜像默认情况下 ro.debuggable 属性也为 1
        • 查看方式 :
          • 运行 "abd shell getprop ro.debuggable"
        • 使用 setpropex 修改系统属性
        • 在手机上执行
          • ./serpropex-pie ro.debuggable 1
        • 直接修改内存中的系统属性,不会写回文件,重启会还原
        1. apk 的 AndroidManifest.xml 文件开启了调试 (android:debugable="true")
    • 操作
        1. jeb 打开 apk 文件
        1. 打开 bytecode ,找到需要的位置在 smail代码 中下断点
          (快捷键 crtl + b)
        1. 将 apk 安装在adb连接上的手机或者模拟器中 , 并打开应用
        1. Debugger -> start , 打开选择框
        • 4.2 选择对应的机器和 进程(flags 带 d 标志,这是当前代码对应的进程,也可以通过进程名进行搜索)
          • 如果没有看到进程,尝试拖动来扩展进程栏,进程栏可以自由拖动扩展...
          • attach
        1. attach 之后通过操作来触发断点即可
        1. 触发断点后可以通过 vm/locals 查看本地变量的变化 | 这些变量默认是 int 类型,如果没有根据代码变化, 对类型输入一点其他字符后按enter ,会自动修改成对应的类型

    ndk 动态调试

    ida pro 版

    • 分析点:
      • 交叉引用
      • JNI_onload , init_array
    • 环境:
      • root 的手机或者模拟器
      • ida pro
      • 对应手机或者模拟器架构的 android_server
    • 操作步骤
        1. adb push android_server /data/local/tmp
        1. adb shell
        • 2.1 cd data/local/tmp
        • 2.2 chmod 777 android_server # 此处是需要 root 权限的点
        • 2.3 ./android_server # 此处 android_server 开在本机(手机或者模拟器)的 23946 端口


          image.png
        1. adb forward tcp:23946 tcp:23946 # 将 手机的 23946 端口转发到本机(电脑)的 23946 端口
        1. 打开 ida # 不打开任何项目
        1. debugger -> attach -> remote *** gdb # 选择对应架构的 gdb
        1. 设置连接的 gdb
    image.png
      1. 选择对应的进程
    image.png
    • #后续操作等拿到测试机再补充

    相关文章

      网友评论

          本文标题:android 动态调试

          本文链接:https://www.haomeiwen.com/subject/lwrheqtx.html