程序员的分析力

来源:互联网 发布:js为div添加点击事件 编辑:程序博客网 时间:2024/04/28 19:13

内容摘要: 讲述疑难问题分析的一般思路、方法以及常用工具,辅助提升程序员的开发效率。

 

       很早就有打算写这样一篇文章的冲动,把自己工作近5年来,从最初的煎熬到后来的有力量制衡,期间过程中遇到一些疑难问题分析及解决思路整理提炼出来,供入行不久,行道尚浅的同学一些可能有益的参考。这个文章里,我们的讨论对象,主要是疑难棘手问题,就像医学上那种听起来骇人的疑难杂症。这个文章的目标,当然是帮助大家克服畏难,有所解脱。我会逐步从自身前提、关键思路及有效工具来展开,提供针对这类问题的通用性指导,最终帮助建立内含实力的信心,提高大家的分析力。

        不得不先讲到前提,这是进入后面其它论述的基础要素,这里我总结的前提,包含有程序员精神和技术广度。程序员精神这个概念,最初是从现在用得已经很广泛的企业家精神吸取过来的,目前没有公认的定义,我一直认为是持久激情,追根究底,主动承担,兑现承诺与冒险的综合。特别强调一下持久激情,虽然这个文章的最终目的是降低大家面对疑难问题时的投入,但是千万不要以为就能以浮躁轻松的心态去处理以后的问题,只有具备持久耐力与激情的打算,才能集中精力静下心来全神贯注。技术广度是另一个基础,如果你提前了解涉猎诸多相关领域的知识,这样会使你更如鱼得水。反之,试想,如果在做协议分析,连http的请求响应格式都不清楚,又叫人情何以堪?

       具备了以上前提条件,我们可以接下来进一步讲讲疑难问题分析的关键思路。一般来讲,有这样的步骤。

       首先,大致理清熟悉现有业务流程,逆向思考,抓住准确的切入点。

       其次,依靠有效工具去查找定位原因。

       最后,根据定位到的原因,结合现状,确定形成解决方案。

       以上文字写得有些抽象难懂,我们来看几个实际的疑难问题例子,借以直白化这三个步骤,加深大家的理解和真实体会,

       实例1,puff代理,ie下载文件后,保存却不在既定选择的位置里

       问题描述:使用puff v0.03翻墙,ie打开页面,并下载任意一个文件,选择保存到某一位置,如c:\tools\ADT-18.0.0.zip,下载完成后,却没有发现c:\tools\ADT-18.0.0.zip。

       分析步骤:

       首先,让我们大致理清一下这个问题的操作过程,比较简单,核心过程就是我们选定一个要下载的文件,并选择其在本地要存放到的目标位置,然后确定让ie开始负责下载。从下载进度条转动情况来看,下载过程应该已经正常完成。只不过可能在最后保存文件的时候,出现了问题。所以,我们现在初步抓住保存文件这个动作,作为切入点。


       其次,确定将保存文件这个动作成为切入点后,脑中想到,保存文件,总是一定要读写磁盘,对吧?那么我们使用文件访问监视工具,ProcessMonitor,来监视下载过程中的磁盘文件访问情况,这样检查确认文件到底保存到什么地方去了,为什么不是我们选择的目标位置。

 

        观察后发现,文件竟然莫名其妙地保存到了C:\Documents and Settings\zhang\Application Data\Thinstall\puff\%drive_C%\tools\ADT-18.0.0.zip。

       最后,根据发现的原因,我们的解决方案,当然是直接到C:\Documents and Settings\zhang\Application Data\Thinstall\puff\%drive_C%\tools\ADT-18.0.0.zip去拿下载后的文件罗。

       收工。

       实例2,Android支付宝用户名密码存储逆向分析

       问题描述及分析步骤,较长,要耐心阅读。请参见专门文档,\\mbj-builder01\2 新人培养\cases\Android支付宝用户名密码存储分析.docx。

       最后,我把这些年来用起来感觉很有效的工具,贴出来供大家参考借鉴,“假舆马者,非利足也,而至千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。”,共勉。

 

以下所有工具,共享放在\\mbj-builder01\3 tools目录,

搜索

技术搜索当然用Google,其它搜索引擎基本不能满意。

变换关键词,非常重要,一个关键词没有发现好的搜索结果,更换成另一个关键词,有时就会柳暗花明。记住,持久耐心与激情。

有时Google上不去,那就翻墙。

翻墙工具

puff011,折腾了很久,才找到的一个很方便工具,以前的puff003现在不能用了。这次找到了原始源,http://www.erights.net/,以后作者有更新,从这里直接下。

反编译

IDA,专业级反汇编工具,支持反编译多种处理器类型的二进制代码,如exe、dll、so等。

dex2jar,转换.dex成.jar。

DJ Java Decompiler/jd-gui,反编译.class到.java。

校验

Hash,文件md5摘要信息提取。

网络抓包

HTTP Analyzer,只能抓取HTTP协议数据包。

Wireshark,专业抓取各种协议数据包,很强大,手机和桌面都有支持。

文件系统访问监视,进程线程监视,注册表访问监视

这三个工具,以前分别由单独一个程序来提供,现在已经统一整合到ProcessMonitor。另外,微软提供的其它有用工具集合,参考这里,

http://technet.microsoft.com/zh-cn/sysinternals/bb842062

文件及目录比较工具

Araxis.Merge.Professional,很好用,支持过滤器去掉.svn比较。

文件解锁

Unlocker,文件被哪些进程占用?删除不了?用它全搞定。

虚拟机

VMware-workstation,经典的老牌虚拟机软件。

16进制工具

WinHex,16进制字节形式,查看文件原始字节内容。

网速限制工具

p2pover有了它pc上也可以模拟网络速度不好的情况。

TrafficShaperXpSetup,xp上很好用,win7上暂时未兼容。

远程调试工具

Windbg,动态远程调试其它进程。

DebugView,查看系统范围内的日志输出。

原创粉丝点击