• Apk_动态调试方案


    环境准备#

    image

    image

    如图使用官方版本的adb.exe和两个.dll文件 ,覆盖【替换】夜神模拟器目录下的相同文件!同时将nox_adb.exe 也换成官方版本的adb.exe文件,但是命名必须还是nox_adb.exe。

    ida .so动调#

    使用模拟器#

    adb devices  # 查看端口
    adb.exe connect 127.0.0.1:62001
    adb push F:\CTF_\ctf_tool\Re_tool\ida_pro\IDA_7.7_chinese\dbgsrv\android_x86_server /data/local/tmp
    (IDA的dbgsrv目录下有很多版本,我尝试了这个版本出错,发现还有一个版本叫android_x86_server,可以成功运行)  /data/local/tmp/android_server(这个目录其实可以随便放,有的反调试会检测)
    
    
    adb shell
    cd /data/local/tmp
    chmod 777 android_x86_server
    ./android_x86_server
    
    # 再开一个终端,进行端口转发
    adb forward tcp:23946 tcp:23946
    
    
    # 一些相关命令
    
    # 查看端口
    netstat -ano | findstr "5037"
    # 杀死进程
    taskkill -f -pid 8377
    
    adb kill-server
    在关闭adb服务后,要使用如下的命令启动adb服务。
    adb start-server
    

    image

    注意:这里.so文件的架构类型,要与ida进行远程调试的文件适配。

    image image

    做好准备工作后,ida 加载.so文件,并设置好断点。然后用模拟器将要调试的apk程序运行起来,接下来使用ida 附加apk程序,开始动态调试。

    image

    完成.so文件的动态调试!

    jeb 动调#

    使用模拟器#

    使用安卓修改器,在AndroidManifest.xml里修改或添加可调试权限

    android:debuggable="true"  # AndroidKiller 等工具完成
    

    入口调试【模拟器要处于开发者模式,并且打开USB调试】

    # 安装调试应用
    adb install app-release.apk
    
    nox_adb devices  # 查看端口
    nox_adb.exe connect 127.0.0.1:62001
    adb shell
    
    # am start -n 包(package)名/包名.活动(activity)名称
    am start -n com.new_star_ctf.u_naive/com.new_star_ctf.u_naive.MainActivity
    
    # 启动命令
    adb shell am start -d -n com.new_star_ctf.u_naive/com.new_star_ctf.u_naive.MainActivity
    

    模拟器运行后附加:

    or

    上面的步骤也可以略过!直接模拟器启动apk程序,然后附加。

    使用真机#

    xxx.apk(待动调程序)安装到安卓手机上,安装后打开APP。

    【同样需要使用开发者模式,并打开USB调试,还有手机要是root权限

    (非root 权限似乎也能调,自行尝试)

    提示:
    手机里面打开设置,对着安卓版本狂点几次,即可打开“开发者模式”,
    然后在开发者模式里面打开“USB调试”。
    

    然后使用数据线把手机和电脑连接起来,当弹出“是否允许电脑调试手机”之类的提示时选择允许。

    image

    最后手机打开xxx.apk,并使用JEB开始调试。

    image

    image

    jadx 动调#

    使用模拟器#

    要动调的xxx.apk程序,在模拟器中运行起来。

    jadx直接动态调试即可。

    image

    然后双击apk程序。

    image

    成功动态调试!!!

    使用真机#

    jadx的真机调试和jeb的真机调试做相同的前置准备即可完成!

    其余步骤与用模拟器相同。

    image

    image

  • 相关阅读:
    Java学习笔记 --- 构造器
    ipv6笔记及总结
    不知道电脑批量旋转图片怎么操作?手把手教会你
    【深度学习】torch.squeeze()移除维度函数 | torch.unsqueeze()增加某一维度函数 | pytorch
    数字孪生体标准编程
    基于SqlSugar的开发框架循序渐进介绍(26)-- 实现本地上传、FTP上传、阿里云OSS上传三者合一处理
    Python练习题:从列表中选取任意个元素求和
    方舟生存进化开服需要多少钱
    __declspec(dllimport)
    36寸旅行小吉他怎么选?适合成人儿童初学入门的几款高性价比民谣小吉他品牌推荐!
  • 原文地址:https://www.cnblogs.com/Only-xiaoxiao/p/17216465.html