逆向 - 基础知识

作者: cochn | 来源:发表于2017-08-07 15:09 被阅读37次

iOS逆向环境

  • iOS逆向需要在越狱环境下操作
  • 使用uname -a 查看手机环境

Darwin

  • Darwin是一种类似unix的操作系统,它的核心XNU,XNU是一种混合式内核,结合了mach与BSD两种内核

    • 主流的类Unix

      • Linux 由Linus Torvalds研发的,代表发行版本CenOS,Redhat,Ubuntu,Debian,openWRT等

      • Mac OS X的Intel部分

      • freeBSD 由加州大学伯克利分校基于UNIX研发的(UNIX变种,当时如果不是与贝尔实验室打官司,可能就不会有现在的Linux什么事)

      • Solaris 由Sun(现为Oracel)开发的UNIX商业版本

  • BSD 实现在Mach的上层,这一层提供的API 支持了POSIX标准模型。在XNU中主要实现了一些高级的API与模块

  • UNIX 进程模型
    == e.g fork,vfork,wait,waitpid,exec等 ==

  • POSIX 线程模型即pthread,以及相关的同步功能
    == e.g pthread_create,pthread_mutex(线程互斥锁)==

  • UNIX的用户与组管理
    ==e.g root用户,mobile用户,chmod等==

  • 网络协议栈(BSD Socket API),符合POSIX 模型
    == e.g socket();bind(); listen();accept();connect(); gethostbyname(); gethostbyaddr()等伯克利套接字API==

  • 文件系统/设备系统
    == e.g Filesystem Hierarchy Standard(文件系统层次化标准)==

iOS,OSI,ISO的含义

  • iOS 苹果公司开发的移动操作系统

  • OSI 是Open System Interconnection的缩写,意为开放式系统互联。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

  • IOS是国际标准化组织。上面的OSI模型由该组织制定。一般类UNIX系统都基本符合POSIX标准和IOS C标准

    • POSIX表示可移植操作系统接口(Portable Operating System Interface)

    • IOS C标准,C语言标准库接口

为什么越狱

  • 突破iOS沙盒机制的限制(sandbox)== 沙盒是一种安全机制,为运行中的程序提供隔离环境。沙盒在启动的时候可以设置运行的程序是否可以访问网络、文件、目录等==
sandbox.jpg

逆向的基本思路

  • 正向工程(Forward Engineering)

    抽象的逻辑设计 => 具体的物理实现
    设计概念和算法 => 编写源代码 => 编译成二进制机器码
    将想法和设计理念变成具体实现的过程

  • 逆向工程(Reverse Engineering)

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

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

  • 程序的编译和反编译

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

                编译链接   
     高级语言   ------->    机器码   
                <------     机器码  
               反汇编/反编译
    
    
            编译链接
    高级语言  ===>     机器码  
              <===
            反汇编/反编译
    
  • 逆向的思路

    • 逆向必须是有目的的、有针对性的(明确你要做的事情)

    • 先熟悉你要逆向的目标程序,从正向的思路去猜测他可能的实现方法(使用的框架、调用的系统API等)

    • 定位关键代码

      • 通过监控UI事件的响应定位关键代码

      • 通过监控底层API的调用定位关键代码(如网络访问接口、文件读写接口等)

      • 通过观察数据的变化来定位关键代码和地址

逆向是一个试错的过程,需要不停的猜测、查找和进行验证,既考验耐心也考验动手能力

相关文章

  • 逆向 - 基础知识

    iOS逆向环境 iOS逆向需要在越狱环境下操作 使用uname -a 查看手机环境 Darwin Darwin是一...

  • iOS method swizzling 的姿势讨论

    最近看了一些关于 iOS 逆向的基础知识和一些开源代码。 根据 Cydia SubStrate 关于 MSHook...

  • 逆向破解基础知识之认识壳与程序的特征

    逆向破解基础知识之认识壳与程序的特征 问题 程序是什么语言编写的? 程序到底有没有加壳? 程序加了什么壳? 关于程...

  • 9.14商学院-电吹风的反面,是吸尘器

    如何训练逆向思维?六种方式:结构逆向,功能逆向,状态逆向,原理逆向,序位逆向,方向逆向,通过以上6种方式,可以很好...

  • 【android】逆向基础知识点

    Android 逆向 没啥好说的,先扫一下盲 APK 组成 asset文件夹:资源目录1:asset和res都是资...

  • iOS逆向之汇编基础知识

    先看一下计算机运行过程的示意图: 就拿我们写的App来说, 它是躺在我们手机磁盘里的, 当我们点击App的时候, ...

  • 一 iOS 逆向工程概述

    1 什么是iOS逆向工程 2 iOS逆向的目的 3 iOS逆向过程以及方法 一 什么是iOS逆向工程 iOS逆向...

  • 第1章 关于逆向工程

    1. 逆向工程 逆向工程(Reverse Engineering,简称PE). 2. 代码逆向工程 代码逆向工程(...

  • iOS逆向学习

    参考文章:iOS逆向开发记录:iOS逆向之手机越狱iOS逆向之介绍iOS逆向之文件系统结构iOS逆向之文件权限及类...

  • 10-应用重签名

    前言 本篇文章继续逆向准备的另一个基础知识点 ? 应用重签名。首先介绍相关的概念,然后利用工具和脚本自动化2种方式...

网友评论

本文标题:逆向 - 基础知识

本文链接:https://www.haomeiwen.com/subject/sdhalxtx.html