夜神模拟器 结合IDA 动态调试SO文件

1. apk拖进夜神,去安装目录下,cmd中输入一下几条命令

nox_adb.exe connect 127.0.0.1:62001
adb push d:\IDA\dbgsrv\android_server(IDA的dbgsrv目录下有很多版本,我尝试了这个版本出错,发现还有一个版本叫android_x86_server,可以成功运行)  /data/local/tmp/android_server(这个目录其实可以随便放,有的反调试会检测)
adb shell
cd /data/local/tmp
chmod 777 android_x86_server
./android_x86_server
再开一个cmd
adb forward tcp:23946 tcp:23946

adb forward的细节:https://blog.youkuaiyun.com/u013553529/article/details/80036227

2. 打开ida,Debugger-attach-Remote linux debugger

3. hostname为localhost,port默认23946,选择夜神中正在运行的程序所对应的进程,可以用jeb反编译apk来找具体的名字如com/xxx/xxxx

选中进程就就如我们的调试界面了

4. 调试界面可以反编译,但是函数名字出不来,针对这个问题暂时没有特别好的解决办法,目前的办法就是用jeb把libxxx.so dump出来,再开一个ida解析他,对照着可以比较出相关的函数名字

5.以wctf2019的apk1为例

现在另一

<think>好的,用户的问题是模拟器开启USB调试后无法被检测到,需要解决方案。首先,我需要回顾之前的对话和提供的引用内容,看看有哪些相关信息可以整合。 用户之前询问的是OPPO手机USB调试无弹窗的问题,现在转向模拟器的USB调试问题。不过,用户提供的引用中有多个关于模拟器的解决方案,比如引用[1]、[2]、[3]、[4]、[5]都提到了连接问题、ADB版本不一致、端口号设置、反编译修改APK等。需要将这些信息整合起来,但用户当前的问题更偏向于模拟器本身的连接检测,而不是APK的修改,所以重点应放在ADB连接和配置上。 首先,用户可能已经按照常规步骤开启USB调试,但设备未被检测到。常见原因包括ADB版本不匹配、端口号错误、模拟器设置问题等。引用中提到模拟器的默认端口是62001(或52001),需要确认是否正确。另外,ADB版本不一致会导致无法连接,需要检查并替换ADB文件,如引用[3]中提到的将系统ADB替换为的nox_adb,或者反之。 接下来,用户可能需要逐步指导:检查模拟器设置、确认ADB连接、处理版本冲突、检查防火墙等。同时,引用[4]提到ADB版本不匹配时的错误提示,需要解决服务器和客户端版本不一致的问题。引用[5]虽然涉及APK反编译,但用户当前的问题不在此,所以可能不需要深入这部分,除非检测不到设备是因为APK本身的问题,但根据问题描述,应该是模拟器连接的问题。 另外,引用[2]提到Android Studio连接问题,解决方案可能涉及ADB路径配置,但用户可能使用其他工具如HbuilderX,需要调整相应的设置。用户可能需要多端口尝试,比如62001和52001,因为不同模拟器版本可能端口不同。 综合这些信息,解决方案应包括:确认模拟器设置、检查ADB版本和连接、端口配置、驱动和防火墙检查等步骤。需要结构清晰,分步骤说明,并注意可能的常见错误点,如端口号错误或ADB版本冲突。同时,要提醒用户重启服务或模拟器,确保更改生效。最后,可以附上验证连接的Python脚本,帮助用户确认设备状态。</think>针对模拟器开启USB调试后无法被检测到设备的问题,以下是系统化解决方案: --- ### **一、核心环境配置** 1. **双端ADB版本统一** - **关键矛盾**:电脑端`adb.exe`与模拟器的`nox_adb.exe`版本不一致会导致连接失败(如报错`adb server version (xx) doesn't match...`)[^4] - **操作步骤**: 1. 定位模拟器的`nox_adb.exe`路径: ```bash # 默认路径示例 C:\Program Files\Nox\bin\nox_adb.exe ``` 2. 将的`nox_adb.exe`复制到系统ADB目录(覆盖原文件): ```bash # Android SDK默认路径示例 C:\Users\<用户名>\AppData\Local\Android\Sdk\platform-tools\adb.exe ``` 3. 重启CMD/PowerShell执行: ```bash adb kill-server && adb start-server ``` 2. **端口映射验证** - **默认端口**:模拟器ADB调试端口为`62001`(Nox 6.x版本)或`52001`(Nox 5.x及以下版本)[^1][^3] - **连接命令**: ```bash adb connect 127.0.0.1:62001 # 优先尝试此端口 adb connect 127.0.0.1:52001 # 备用端口 ``` --- ### **二、深度排查流程** #### **步骤1:模拟器内部配置** 1. 进入模拟器设置 > 关于平板电脑 > 多次点击**版本号**开启开发者模式 2. 返回设置 > 开发者选项,确认以下开关: - ✅ **USB调试** - ✅ **允许模拟位置**(部分调试工具依赖此功能) - ⚠️ 关闭**仅充电模式下允许ADB调试**(避免权限限制) #### **步骤2:系统级验证** ```python # Python脚本检测设备连接状态 import subprocess def check_nox_connection(): result = subprocess.getoutput("adb devices") if "127.0.0.1:62001" in result: print("模拟器已连接") else: print("连接失败,请检查ADB版本或端口") check_nox_connection() ``` #### **步骤3:驱动冲突解决** 1. 打开Windows设备管理器 > 查看隐藏设备 2. 卸载所有`Android Composite ADB Interface`驱动 3. 重新插拔模拟器虚拟USB设备(模拟器会虚拟一个USB控制器) --- ### **三、特殊场景处理** #### **场景1:Android Studio无法识别** 1. 在Android Studio中手动指定ADB路径: **File > Settings > Appearance & Behavior > System Settings > Android SDK** → 修改`Android SDK Location`指向包含`nox_adb.exe`的目录[^2] #### **场景2:HBuilderX连接异常** 1. 将HBuilderX的`adbs`目录替换为`bin`目录下的`nox_adb.exe` 2. 修改连接命令为: ```bash nox_adb connect 127.0.0.1:62001 ``` --- ### **四、终极解决方案** 若上述方法无效,执行以下操作: 1. **完全重置ADB配置**: ```bash adb kill-server del /f /q %USERPROFILE%\.android\adbkey* ``` 2. **修改注册表**(Windows): ```reg Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags] "IgnoreHWSerNum"=dword:00000001 ``` --- ### **验证连接** ```bash adb devices # 预期输出 List of devices attached 127.0.0.1:62001 device ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值