首页
社区
课程
招聘
[原创][分享]经验谈——持续更新
发表于: 2014-8-11 19:40 11971

[原创][分享]经验谈——持续更新

2014-8-11 19:40
11971
工作之中一点点小小的总结,欢迎讨论、矫正以及继续补充
(一)关于网络抓包
Fiddler由于是设置的IE的LAN代理,所以不是在PC环境下全局有效,仅对IE核的浏览器有效,但是由于需要设备设置代理,所以AndroidFiddler由于是设置的IE的LAN代理,所以不是在PC环境下全局有效,仅对IE核的浏览器有效,但是由于需要设备设置代理,所以Android 2.0的设备无法通过系统设置来设置代理,而且如果app在逻辑中有设置了代理的时候,再设置Fiddler代理的话就会影响程序逻辑。
解决方法:
Http Analyzer是一个PC环境下全局的抓包工具,可以抓取运行在模拟器上的网络包。
TCPDUMP 这个工具配置正确,可以抓取一些Fiddler不能抓取的包
(二)关于网络发包
A、Android层的HTTP请求,这个没得多说,HttpClient和HttpConnection两种,方式分为POST和GET.
B、webView里运行js发包,这种方式一般出于web app开发周期快更新方便等优势,出现的频率很高,js一般要用网络加载不会放在本地,加载本地html的时候很容易篡改,网络引用的js文件webView一般会放在cache里面修改起来会麻烦一些。
C、android socket的发包。比如聊天程序会使用udp,这种包请使用wireshark和修改Fiddler的socket抓取项。
关于抓包工具(无图无真相说个蛋啊)具体操作比较多,多点点吧。
D、最近碰到一个使用webView发送协议,但是它跨域访问了,最终通过Invoke我们自定义的webView的setAllowUniversalAccessFromFileURLs来实现,不过是通过反射调用的.
(三)函数逻辑的定位:
jeb支持函数跳转,可以定位到函数调用的位置
jdb 支持批量断点,知道函数的命名空间后就可以下断点了,可以打印出函数对应的调用堆栈实现回溯功能。
apktool+eclipse的调试方法适合像OD一样需要查看寄存器(但是为什么看不见P系列的寄存器,除了this),还有一个要赞下的功能是支持步进和查看线程栈,调试很方便。
(四)取巧方法
目的:打开app的调试阀(LogCat语句)
一般大型的程序开发都会封装打印类,反编译后找到打印类,修改hide掉打印语句的标志位,然后签名打包安装,运行前使用Xposed框架上的"Disable signature check"工具patch掉系统的签名认证。
目的:设置app为调试模式方式打开
A、可以使用命令行am start -D -n com.test.hello/.helloActivity的方式
B、可以在重打包的时候在androidManifest.xml文件中的application节点上添加android:debugable="true".
C、可以在开发者选项中点击“选择调试应用”,勾选我们要调试的app,但是这个的前提需要android:debugable的值不能为false,不然在列表项里面也找不到我们的应用。
附加的时候可以使用DDMS或者PS | grep来查看PID号
(五)Bug
1、处于jdk1.6.0_16之前的版本环境中时,Eclipse的Debug模式下调试断点可能不会停下来。Eclipse 在调试的过程中,已经创建好的线程ID是不变的,断点根据ID绑定于某个线程,但是在jdk1.6.0_14 中,这个ID值会被不可预知的改变,从而导致断点失效。Eclipse官方bug公布:https://bugs.eclipse.org/bugs/show_bug.cgi?id=279137
2、MIUI开发版系统,在安装一些风险性的APP的时候,会默认报INSTALL_FAILED_CONTAIN_VIRUS的错误,本来的处理的逻辑应该是:安全中心->病毒扫描->安装监控关掉即可。但是就目前最新的MIUI开发版4.8.8上述操作即便是重启后仍然无效,解决办法是使用钛备份先备份后再卸载掉"安全中心"。
(六)断点调试问题
1、编译的时候line number没有设置,导致断点无效,参考http://stackoverflow.com/questions/957822/eclipse-unable-to-install-breakpoint-due-to-missing-line-number-attributes
2、Eclipse+apktool的方式调试的时候,再怎么调整断点都无法被触发的话,那么就重新换一个Eclipse的工作目录,这样ecliipse的配置都恢复为了默认,能解决因为配置文件变化引起的断点无效的现象。注意这种调试的方式,不要使用开发者选项里面的那个调试应用,那样的话断点同样断不下来。
(七)畅想
写一个Xposed插件,主要支持在开发者选项中,点击选择调试应用的时候,那些在配置文件中没有设置debugable为true的应用也可以显示在列表里面,这样的好处是调试的时候不用反编译了,直接在列表里面选择要调试的应用程序。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
那我占个2L吧
2014-8-11 22:46
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那我占个3L吧
2014-8-12 09:33
0
雪    币: 16420
活跃值: (1670)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
还是安卓上的。。强~~~~~~~~~~
2014-8-12 09:48
0
雪    币: 250
活跃值: (251)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mark
2014-8-12 10:11
0
雪    币: 6303
活跃值: (2051)
能力值: ( LV7,RANK:150 )
在线值:
发帖
回帖
粉丝
6
那我只能占6楼了
2014-8-12 11:28
0
雪    币: 114
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我只能占7楼了~
2014-8-12 11:35
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我只能占8楼了~
2014-8-12 14:09
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
小米这个问题早就有人提过现在还没改,真牛逼,关闭病毒检测都不行,
还有一点恶心的是小米调试的时候 每次都报等待调试器,每次强制结束都不管用
关闭应用都不行 只能重启手机
这种垃圾玩意 早点倒闭算了,天天跟开发者找事
2014-9-6 17:32
0
游客
登录 | 注册 方可回帖
返回
//