时时勤拂拭,勿使惹尘埃

TOC

Categories

Intelligece(五)cia_Reverse Engineering



逆向工程

关于逆向工程iOS相关二进制/协议等的地方指南/技巧/一般信息

Lockdownd


概观

Lockdownd是设备上的守护进程,提供与iOS设备交互的服务。其中一些服务包括:
服务名称
描述
afc
Apple File Conduit,由iTunes用于在设备之间交换文件(主要是Media,如照片和视频)
syslog_relay
System Log Relay,由Xcode用于显示设备的syslog。
您可以通过转到Xcode - > Devices来在Xcode中看到这一点
diagnostics_relay
检索设备信息,以及电源相关功能,如睡眠,重新启动和关机。
您可以使用各种键来检索设备信息。

在iOS 8中,这些服务是在/ usr / libexec / lockdownd二进制文件中的一个xml文件(苹果公知的plist文件)中定义的。
它嵌入在二进制本身的一部分内,可以通过执行以下操作来提取:
在iOS 7中,这些服务是在一个单独的plist文件中定义的,位于/System/Libary/Lockdown/Services.plist中。

与Lockdownd沟通

要建立与lockdownd连接,您可以使用移动设备框架(位于/System/Library/PrivateFrameworks.framework/Versions/A/MobileDevice上OSX )。该MDF  工具可以通过Python与它对接。请参阅MDF中的plistservice.py文件,了解如何连接到服务。
在iOS 8之前,发送给lockdownd的数据格式是一个二进制plist。在iOS 8中,一些服务(如aitd)已切换到NSKeyedArchiver格式(请参阅wirservice2.py,nskeyedarchiver.py,ait.py)。一旦建立了连接(和/或为某些服务(如aitd)发送了一个“Hello”),您将等到接收到由连接创建的套接字上的数据。

逆向Lockdownd

lockdownd的核心在于一个大功能(位于iPhone 7,2 8.1.3上的0x1000139a0)。您可以通过查找XREF到字符串“XPCServiceName”找到它。这是函数的一个预览:

在LLDB中查找功能

简单的方法

  1. 加载二进制到IDA,查找你关心的功能
  2. 通过LLDB连接到二进制文件
  3. 连接后,运行:
    1. image dump sections<path to binary>
    2. 查找__TEXT段起始地址(PAGEZERO之后),复制
  4. 回到IDA,然后Edit - >Segments - > Rebase Program
  5. 选择Image base并粘贴复制的值
  6. 复制函数的新地址
  7. 在lldb中,disass -s <new address>

不太简单的方法

  1. 将二进制加载到您选择的反汇编器中
  2. 通过LLDB连接到二进制文件
  3. 连接后,运行:
    1. image dump sections <path to binary>
    2. 查找__TEXT段起始地址,复制
  4. 在二进制文件上运行otool -lv,找到__TEXT段的vmaddress
  5. 从步骤3b的值减去第4步的值 - 这是SLIDE
  6. 复制函数的地址,并加上SLIDE
  7. 返回到lldb,disass -s <value from step 6>

0 评论:

发表评论