-
-
[原创]一句话取苹果系统的出厂配置核心文件,是原装机还是换了配件全清楚了!
-
发表于:
2021-8-13 17:16
82620
-
[原创]一句话取苹果系统的出厂配置核心文件,是原装机还是换了配件全清楚了!
最近项目需要,逆向了某思的验机功能。发现了苹果系统的验机法宝,不管是手机还是ipad,ipod,macx都有效。
先是网上找了一堆资料,发现高手研究的很透彻了,还有人专门开了通用开源库文件 libimobiledevice 就是非常好用的一个。可以直接在各种平台下,用编译后的库直接和苹果类设备通信,获取设备相关信息,操作设备,如截屏,关机,重启等。
libimobiledevice 库的最新版本是1.3.0,还要配合usbmuxd 1.1.1等,因为项目最终要做到linux嵌入式中,正好我手上有个树莓派,可以用树莓派官方提供的直接下载安装就好了,很方便。
https://bbs.pediy.com/upload/attach/202108/4656_UQ6MJFZ6BYJXZYQ.png
也是一句话就安装好了环境
$ sudo apt-get install usbmuxd libimobiledevice6 libimobiledevice-utils
库环境安装好后,最好重启一下树莓派,然后就可以连接上苹果手机或ipad测试了,当插入时会有一个安全验证,输入你的安全密码就可以了。
现在测试一条简单的测试:
idevice_id -l
如果出现一串码就是设备的UDID,说明库环境正常!
再来一条:
ideviceinfo 就出现了设备的全部相关信息
idevicedate 查询设置时间的
idevicediagnostics restart 重启设备
ideviceinstaller -i xxx.ipa 安装应用
idevicesyslog 查看日志
idevicescreenshot 还有这个截图
所有上面这些都是通过库直接访问设备的,没有经过什么其它的助手之类包括官方的工具。
然而,这些都是公开的资料网上都可以找到,客户要的是出厂配置的原始文件!据说是保存在设备硬盘中的,出厂时写入的(also known as System Configuration is a partition on the NAND found on iOS devices),这些读取方法是没有直接公开的,但是相关工具中可以逆向取出来,于是祭出IDA大器,外加x64dbg一通操作,一通操作猛如虎,老板砍掉2万5,有点不爽,也没办法,谁让咱喜欢这行呢。
部分分析片断如下:
5CDDA0C8 | 68 4CD0EB5C | push jcore.5CEBD04C | 5CEBD04C:"ProductVersion"
5CEBD0A4 "SystemBUID"
5CDE971E | 50 | push eax |
5CDE971F | 51 | push ecx | ecx:&"6d3d8c34d0e336b65341f7d9880d36afc0d7911b"
5CDE9720 | E8 1B09FFFF | call jcore.5CDDA040 |
5CDE9725 | 83C4 0C | add esp,C |
5CDE9728 | 3BC3 | cmp eax,ebx |
5CDE972A | 74 2C | je jcore.5CDE9758 |
5CDE972C | 50 | push eax |
5CDE972D | 68 D400E95C | push jcore.5CE900D4 | 5CE900D4:"ERROR: Could not connect to lockdownd, error code %d\n"
5CDE9758 | 8B4D EC | mov ecx,dword ptr ss:[ebp-14] | [ebp-14]:"SysCfgData"
5CDE975B | 8B55 F4 | mov edx,dword ptr ss:[ebp-C] | [ebp-C]:"com.apple.mobile.internal"
5CDE975E | 8D45 F8 | lea eax,dword ptr ss:[ebp-8] |
5CDE9761 | 50 | push eax |
5CDE9762 | 8B45 F0 | mov eax,dword ptr ss:[ebp-10] |
5CDE9765 | 51 | push ecx | ecx:"SysCfgData"
5CDE9766 | 52 | push edx | edx:"com.apple.mobile.internal"
5CDE9767 | 50 | push eax |
5CDE9768 | E8 B305FFFF | call jcore.5CDD9D20 |
5CDE976D | 8B3D 0CF3E85C | mov edi,dword ptr ds:[<&free>] |6A3E9758 | 8B4D EC | mov ecx,dword ptr ss:[ebp-14] | [ebp-14]:"SysCfgData"
6A3E975B | 8B55 F4 | mov edx,dword ptr ss:[ebp-C] | [ebp-C]:"com.apple.mobile.internal"
6A3E975E | 8D45 F8 | lea eax,dword ptr ss:[ebp-8] |
6A3E9761 | 50 | push eax | &node
6A3E9762 | 8B45 F0 | mov eax,dword ptr ss:[ebp-10] |
6A3E9765 | 51 | push ecx | key
6A3E9766 | 52 | push edx | domain
6A3E9767 | 50 | push eax | client
6A3E9768 | E8 B305FFFF | call <jcore.lockdownd_get_value> |
6A3E976D | 8B3D 0CF3486A | mov edi,dword ptr ds:[<&free>] |
6A3E9773 | 83C4 10 | add esp,10 |
*
最后是关键方法:还是ideviceinfo,从域com.apple.mobile.internal中找key SysCfgData就是我们要的最原始的出厂配置文件了!
ideviceinfo -q com.apple.mobile.internal -k SysCfgData
解码后就是标准的0x20000字节(128K)的配置文件。4656_R7CAWTZ6FVZNV3N.docx
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2021-8-13 17:24
被sungy编辑
,原因: