2019-11-19 11:14:58 qq_33693111 阅读数 21

android .so文件调试

一、应用程序正常启动的调试:
1、查看当前设备(本人使用android studio自带4.0的设备)
adb devices
2、adb shell
3、cd/data/local/tmp
4、查看当前文件夹内容
ls
5、删除指定文件
rm android_server
6、rm as
7、exit
8、添加ida中的android_server 文件
adb push android_server /data/local/tmp
注:android_server 所在的目录(IDA 7.0\IDA_Pro_v7.0_Portable\dbgsrv)
9、添加可执行权限
chmod 777 as(android_server重新命名后的文件 )
10、执行文件
./as
11、开启另一个cmd,进行端口转发
adb forward tcp:23946 tcp:23946
二、应用程序调试模式启动的调试:
1、adb shell
2、cd/data/local/tmp
3、ls
4、./as -p31928(非调试模式不用加端口号)
5、adb forward tcp:31928 tcp:31928(开启另一个cmd,进行端口转发)
6、adb shell am start -D -n com.linktrust.student.ndkregistdemo/.MainActivity (非调试 模式去掉-D)
7、jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700(恢复程序运行)

2019-08-09 14:53:04 PLA12147111 阅读数 320

1.在IDA/dbgsrv目录下找到android_server文件,将该文件放入手机/模拟器/data/local/tmp目录下

发送文件操作命令:

adb push android_server /data/local/tmp

 

2. 控制台输入 adb shell su 命令获取管理员权限

 

 

3.cd /data/local/tmp 进入android_server目录 ,输入chmod 777 android_server命令获取执行权限 

 

 

4. ./android_server启动android_server 

 

 

5. 重新打开一个CMD窗口,输入adb forward tcp:23946 tcp:23946   命令 端口转发

 

 

6. 再次打开一个新CMD窗口,打开app,输入命令:adb shell dumpsys activity top 复制App应用包名Activity,复制完后关闭模拟器中的app

 

 

7.adb shell am start -D -n  包名/activity路径   重新启动应用 

adb shell am start -D -n com.qianyu.helloworld/.LoginActivity 

 

启动后界面是这样子的

 

 

8.打开DDMS,查看运行的app的端口信息

(1) 

 

(2) 记住8606这个端口号

 

9.打开IDA, 选择菜单:debugger->attach->Remote ARM Linux/android debugger

(1) 

  

(2) 

 

(3) 

(4) 

(5) 

(6) 稍等片刻会弹出此窗口

 (7)设置试选项

 (8)注意此步骤必须等待调试界面加载完成后才可勾选,否则无效

(9)ok后,点击F9

 10.用jdb将app恢复执行,8606是刚才DDMS上面的那个端口号

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8606

 

11.回到IDA,打开Module list窗口

 

 

12. 执行 调试

(1) 如图表为绿色,继续点击F9

 

(2) 出现此窗口点击取消,继续F9,直到你想要的so文件加载出来

(3) 

 (4)多次点击F9,在so文件被触发加载进来后会在modules查看到,双击进去,找到JNI_Onload

 (5)双击进去可跳转到JNI_Onload函数代码位置

 

 (6)

 

13.接下来就可以进行调试了(F7步入 F8步过)

 

2018-05-31 13:48:21 qq_16812035 阅读数 92

1.首先一定要有一个root过的android手机,我用的是nexus4,操作系统版本android4.4,咸鱼买的。

2.打开手机中的开发者选项,勾选调试选项中的USB调试。

3.现在可以将手机与电脑用数据线连接(有的数据线不行,也会影响调试),在电脑中开启控制台窗口,输入adb devices,可以看     到已经检查到设备了。

4.这时候可以使用adb push "C:\Program Files\IDA 7.0\dbgsrv/android_server" /data/local/tmp/ands将C:\Program Files\IDA     7.0\dbgsrv/中的android_server上传到手机端的/data/local/tmp目录下,并将文件名改为ands。android_server是用来调试32位 代码的,android_server64是调试64位的,根据需求上传吧。

5.接着输入adb shell  进入手机shell。可能你看到箭头方向的符号是$符号,而不是#号,这时候需要在shell中输入su,获取root       权限。

6.这时候我们还需要在手机端输入 chmod 777 /data/local/tmp/ands更改权限,不知道上面意思的可以查下linux的chmod指令。

7.终于可以启动上传的文件了,输入cd data/local/tmp,进入tmp文件夹,执行./ands,会看到如下画面。

8.再开另开一个控制台窗口输入adb forward tcp:23946 tcp:23946

9.在手机上打开APP

10.打开IDA,选择 Debugger->Attach-> Remote ARMLinux/Android debugger

11.直接点击OK。

12.找到待调试的进程

13.启动会有点慢,会弹一些框,不要怕,无非点确定或取消,点确定崩了,下次就点取消,这时候代码暂停到这个画面,说明    成功了。直接F9运行就行了。

  

2017-05-31 15:18:53 version1_0 阅读数 14481

菜鸟进场,方圆十里,寸草不生

现在基本都在用第三方的分享,但是不知道为什么,脑残的准备自己集成微博的第三方分享,本来一路躺坑都过来了,不过遇到一个奇葩的问题,软件在android N上会崩溃,其实也就是在android7.0上会崩溃,其他手机都好的,网上查的话全都是什么android7.0更新什么什么的,没什么实质性的作用,给的一些典型解决案例也看不懂,不过最后在外国网站上找到了解决办法,其实很简单。下面我就以我自己这个例子来说怎么解决吧,想来其他的错误也差不多。

先给出的错误报告:

java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib64/libweibosdkcore.so" needed or dlopened by "/system/lib64/libnativeloader.so" is not accessible for the namespace "classloader-namespace"
                 at java.lang.Runtime.loadLibrary0(Runtime.java:977)
                 at java.lang.System.loadLibrary(System.java:1530)
                 at com.sina.weibo.sdk.net.HttpManager.<clinit>(HttpManager.java:43)
                 at com.sina.weibo.sdk.net.HttpManager.openUrl(HttpManager.java:63)
                 at com.sina.weibo.sdk.utils.AidTask.loadAidFromNet(AidTask.java:400)
                 at com.sina.weibo.sdk.utils.AidTask.access$200(AidTask.java:49)
                 at com.sina.weibo.sdk.utils.AidTask$2.run(AidTask.java:232)
                 at java.lang.Thread.run(Thread.java:761)

解决办法就是按ctrl + shift + n 找到报错的前一个.so文件,这里就是(libweibosdkcore.so),找到之后将其复制到自己主模块的jniLibs文件夹下,一定按文件夹分别复制,不然还是会报错,然后运行就可以了。

但是可能会有些其他的错误,比如说我这里遇到的,weiboSDK里面的.so文件是32位的,而android7.0的机子好多都是64位的,然后我又到官方demo里面找到了所有.so文件。

至此解决问题,花费两天,主要是最开始一直在研究怎么将私有库变为公开库,然后一直没学会。

2014-10-28 20:03:02 u013149325 阅读数 4753

        今天在调试android程序的时候,由于是NDK开发,要先编译.so库再打包下载到android模拟器,所以花费的时间比较长。控制台就会报如下错误:

        error launching activity

        com.android.ddmlib.shellcommandunresponsiveexception

        在百度上搜没找到答案,然后谷歌,在stackoverflow这个论坛上找到了答案,经验证可以解决这个问题。

        解决方案:

        Window->Preferences->Android->DDMS,把ADB connection time out(ADB的超时时间)设置大一些,就不会再报错了。在我这里,它的默认值是5000ms,即5秒,我把它改成了50秒。如下图所示:


      原因分析:ADB的超时时间如果太短,在我们的activity launch之前,它就关闭了,所以launch activity失败。

android 调试.so

阅读数 570

Android 调试.so库文件

阅读数 15361

没有更多推荐了,返回首页