博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS逆向(五)应用场景、基本思路、流程、
阅读量:7115 次
发布时间:2019-06-28

本文共 1037 字,大约阅读时间需要 3 分钟。

应用场景

  • 促进正向开发,深入理解系统原理
  • 借助别人的设计和实现,实现自己的功能
  • 分析恶意软件,应用安全审计
  • 从逆向的角度实现安全保护

学完逆向之后你将可以从不同的角度看待和思考问题

逆向的你基本思路

  • 正向工程(Forward Engineering) 抽象的逻辑设计 => 具体的物理实现
    设计概念和算法 => 编写源代码 => 编译成二进制机器码

将想法和设计理念变成具体实现的过程

逆向工程(Reverse Engineering)

具体的物理实现 => 抽象的逻辑设计 反编译机器码 => 汇编代码(类似的高级语言代码) => 理解其算法和设计概念

从二进制码中提取设计概念和算法

  • 程序的编译和反编译 高级语言(C/C++/Oc/Java/Python/C#) -> 中间语言(如:汇编等) -> 目标代码(exe/lib/dll/sys/dylib等二进制文件)

    编译链接   高级语言     ========>    机器码	            <========     机器码          反汇编/反编译复制代码
    编译链接高级语言  ========> 机器码            <========          反汇编/反编译复制代码

逆向的具体流程大致如如下

  • 解密、导出应用程序、class-dump导出头文件,为后续工作做准备
  • 从界面表现入手,获取当前页面布局和控制器
  • hook发现的一些相关类,记录输出调用顺序及参数
  • 找到关键函数,查看调用堆栈,hook测试效果
  • 静态分析加动态调试分析关键函数的实现逻辑
  • 模拟或篡改函数的调用逻辑
  • 制作插件,或则一直到非越狱机器

上述过程看似平淡无奇,但实际做的时候不会很顺利,因为我们可能需要反复探索才能定位目标函数,探索的过程及枯燥也有趣,你会在探索中成长和强大?,逆向是一个试错的过程,需要不停的猜测、查找和进行验证,既考验耐心也考验动手能力

逆向的具体思路

  • 逆向必须是有目的的、有针对性的(明确你要做的事情)
  • 先熟悉你要逆向的目标程序,从正向的思路去猜测他可能的实现方法(使用的框架、调用的系统API等)
  • 定位关键代码

定位关键代码的方式

  • 通过监控UI事件的响应定位关键代码
  • 通过监控底层API的调用定位关键代码(如网络访问接口、文件读写接口等)
  • 通过观察数据的变化来定位关键代码和地址

转载于:https://juejin.im/post/5c85e09f518825431116b361

你可能感兴趣的文章
基于glusterfs和gearman的离线任务运算分布式化方案介绍
查看>>
小学生信息技术课的有效教学
查看>>
天堂与地狱的区别
查看>>
java io小实例
查看>>
127小时
查看>>
Windows Server 2008 R2 SP1中的具体改进
查看>>
Autoit 自动化安装软件
查看>>
shell 脚本-----循环数组
查看>>
Merge into 详细介绍
查看>>
MySQL Server参数优化 - innodb_file_per_table(独立表空间)
查看>>
ubuntu中文出现乱码
查看>>
Linux系统命令之tcpdump
查看>>
第 八 天 : 复 习 中 ( 一 )
查看>>
UVA 11404 五 Palindromic Subsequence
查看>>
关 于 解 压 缩 的 类 习 题
查看>>
[C]字符串排序之-冒泡法
查看>>
浅析企业门户的价值
查看>>
我的友情链接
查看>>
PHP导出MySQL数据到Excel
查看>>
Javascript的console.log()用法
查看>>