逆向笔记 - 初识逆向工程

前言

当开发一个应用的时候,首先要明确需求、设计稿、交互稿。然后程序员根据需求、设计稿、交互稿,编写出产品想要的应用。
在逆向中恰恰相反。拿到目标应用后,去分析他的页面组成结构、代码层级、程序的执行流程,来了解他的内部原理。
所以,逆向工程就是从现有的产品推导技术实现需求的过程。

举例

手机上有很多应用,在我们打开应用的时候,可以看到不同的页面和不同的功能。如果我们想要去了解这些功能。

比如:网易云音乐的声音识别功能(如下图),这个时候,就需要用到逆向工程。


Snip20170627_1.png.png

在逆向工程中,有三个步骤进行分析

  1. 工具分析:
    1. 软件页面组成结构:对应用的页面结构、网络请求、文件操作等各个方面入手,来寻找线索,分析出我们想要的东西。
    2. 我们还可以进一步通过某个按钮,去获取到它的响应事件函数,那么这个时候,我们就需要用到静态分析。
  2. 静态分析:
    1. 什么是静态分析:通过某个按钮,去获取到按钮的响应事件函数
    2. 程序功能具体实现:
      • 通过静态分析,我们可以针对某个响应事件函数去分析它内部功能实现:
      • 调用了哪些函数,执行流程是怎么样的
    3. 应用代码框架构成:对不同函数的分析,就可以得到应用代码框架构成。
    4. 结果:
      • 通过静态分析,我们只能得到,应用程序里面有哪些函数、函数里面又实现了哪些代码。
  3. 动态分析:
    1. 什么是动态分析:
      • 如果我们想去分析程序运行时候的代码及其流程、以及参数的传递。这就是动态分析
    2. 执行流程参数传递:
      • 通过动态分析,可以对目标程序进行debug、然后打印出它的参数以及一步步调试它的执行流程等等.
Snip20170627_2.png.png.png

总结:

  1. 通过上面的分析之后,对程序的界面,代码的构成,程序的具体流程 有了全面的了解。这个时候,就能根据目标程序的功能来实现自己app的一些功能和增强它的一些功能。这就是逆向工程的魅力所在。

逆向工程应用平台与层次

平台

window 平台

  • 动态调试: OllyDbg、Windbg、
  • 静态分析:IDA Pro…

安卓平台

ApkTool、dex2jar:对APk文件反编译成dex文件,资源文件等等,然后对dex文件转成java文件,进一步得到java伪代码。这样就能分析出一个安卓应用实现原理和实现逻辑
jd-gui 、 IDA Pro...

iOS 平台

class-dump: 得到目标程序的所有类和类里面的方法
Reveal:得到目标程序的界面层次、界面构成
Cycript、theos…

层次

硬件层、内核驱动层: 通过这两个层次进行分析,我们可以得到底层的具体实现和实现的原理

设备框架层: 通过此层次的逆向分析,可得到一个framewrok里面的具体代码逻辑或者说,我们想了解我们调用了某个api函数后,底层实现了哪些操作。那么这个时候,我们就可以通过“设备框架层”的逆向分析来得到我们想要的结果。

应用层:可以对其他应用进行分析,分析页面组成结构,分析某个功能,拦截数据等等。


Snip20170627_3.png.png


Snip20170627_4.png

逆向工程的相关工具:

监控工具:

  • 记录目标程序行为的工具,包括界面变化、文件读取、网络传输等
  • Reveal、 snoop-it、introspy

反汇编工具

  • 通过分析二进制文件,生成汇编代码,进而转换成高级语言
  • 用来查看执行逻辑和执行流程
  • Hopper,IDA

调试跟踪工具

  • 通过设置断点,查看当前程序运行状态
  • gdb 、 IIdb
Snip20170627_8.png


逆向工程学习路线:


Snip20170627_9.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,242评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,874评论 0 27
  • 第一种方法:在QQ收件箱中直接导出### 首先进入收件箱,点开要导出的邮件屏幕快照 2014-09-11 下午8....
    大刘阅读 13,816评论 0 5