时时勤拂拭,勿使惹尘埃

TOC

Categories

iOS(四)deb包获取&解析&安装



一、获取cydia安装的deb包

以biige商业间谍样本为例:
1、首先打开cydia安装,当下载安装完毕后,提示重启springboard,先不要重启,重启会删除deb包:
deb包名即com.biige.monitor_1.9_iphoneos-arm.deb
3、find / -name com.biige.monitor*.deb
4、通过scp拷贝到本地
scp [email protected]:/private/var/mobile/Library/Caches/com.saurik.Cydia/archives/com.biige.monitor_1.9_iphoneos-arm.deb biige.deb


二、deb包格式


以ikeymonitor样本为例:

2.1 deb 文件是使用 ar 包装,包含了三个文件:

debian-binary - deb 格式版本号码
control.tar.gz - 包含包的元数据,如包名称、版本、维护者、依赖、冲突等等。 在dpkg 1.17.6 之后添加了对 xz 压缩和不压缩的 control 元数据的支持。[1]
data.tar.* - 实际安装的内容
其中,"*"所指代的内容随压缩算法不同而不同。常见的可能值为xz、gz、或bz2。有时也会使用lzma。

2.2 deb文件未打包之前目录

+- MyProgram
   +- Applications
   |   +- MyProgram.app
   |   |    +- Info.plist
   |   |    +- MyProgram
   |   |    +- icon.png
   +- DEBIAN
       +- control
其中,control文件可视为一个没有后缀的UTF-8,Unix编码,Unix/Linux换行符(LF)的一个文本文件,可用写字版进行编辑!

2.3 deb包解开后目录


.keycache文件夹为加载的资源
LaunchDaemons中即luachctl加载进程的plist文件
DynamicLibraries使用了三个MobileSubstrate的动态库:
    keychain.dylib
    MobileSafe.dylib
    PreferencesEx.dylib
usr/bin中一个执行文件centerd,该文件与.keycache中的centerd为同一个文件

2.4 control文件夹

control.tar.gz解压后为一个control文件夹,里面包含三个文件:
这些是软件包安装前后自动运行的可执行脚本. 统称为控制文件, 是 Deian 软件包的"控制"部分它们是:
 #preinst:Debian软件包(".deb")解压前执行的脚本, 为正在被升级的包停止相关服务,直到升级或安装完成。 (成功后执行 'postinst' 脚本)
     control:这个文件主要描述软件包的名称(Package),版本(Version)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。
     postinst:主要完成软件包(".deb")安装完成后所需的配置工作. 通常, postinst 脚本要求用户输入, 和/或警告用户如果接受默认值, 应该记得按要求返回重新配置这个软件. 一个软件包安装或升级完成后, postinst 脚本驱动命令, 启动或重起相应的服务.
     prerm:停止一个软件包的相关进程, 要卸载软件包的相关文件前执行
#postrm:修改相关文件或连接, 和/或卸载软件包所创建的文件。
    当前的所有配置文件都可在 /var/lib/dpkg/info 目录下找到, 与 foo 软件包相关的命名以 "foo" 开头,以 "preinst", "postinst", 等为扩展。这个目录下的 foo.list 文件列出了软件包安装的所有文件。Debian里用apt-get安装或卸载软件时,会常发生前处理或后处理的错误,这时只要删除 对应的脚本文件,重新执行安装或卸载即可。

2.4.1 control

一些软件和作者的基本信息:
Author: Awosoft Technology <[email protected]>     //作者
Maintainer: BigBoss <[email protected]>             //cydia源
Name: iKeyMonitor keylogger for iPad/iPhone/iPod          //程序名
Package: com.aw.mobile.ikm                                //包名
Conflicts: com.aw.mobile.ikm64, com.aw.mobile.ikm.customized
Section: Security                                             //软件类型
Depends: firmware(>= 3.0), mobilesubstrate (>= 0.9.5000), zip(>= 2.0), com.rpetrich.rocketbootstrap
Version: 3.9.0-51
Architecture: iphoneos-arm                                   //软件包结构
Description: reports keylogging, web history, screenshots & more
Depiction: http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=ikeymonitorDp
Homepage: http://moreinfo.thebigboss.org/moreinfo/depiction.php?file=ikeymonitorDp
Sponsor: thebigboss.org <http://thebigboss.org>
dev: ikeymonitor
Installed-Size: 5312
Tag: purpose::extension, ios7support::1, ios8support::1

2.4.2 postinst

安装脚本,主要程序为/Library/Caches/.keycache/centerd
并利用launchctl来启动centerd守护进程(plist文件指定),/Library/LaunchDaemons目录下随系统启动
#!/bin/sh
chown root:wheel /Library/Caches/.keycache/centerd
chmod 755 /Library/Caches/.keycache/centerd
chown root:wheel /Library/LaunchDaemons/com.aw.mobile.ikm.centerd.plist
chmod 644 /Library/LaunchDaemons/com.aw.mobile.ikm.centerd.plist
/bin/launchctl load -w /Library/LaunchDaemons/com.aw.mobile.ikm.centerd.plist
exit 0

2.4.3 com.aw.mobile.ikm.centerd.plist

/Library/LaunchDaemons/com.aw.mobile.ikm.centerd.plist
postinst里利用launchctl加载centerd进程
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
     <key>Label</key>
     <string>com.aw.mobile.ikm.centerd</string>                         //Label值,任务名,一般为plist文件名
     <key>ProgramArguments</key>
     <array>
          <string>/Library/Caches/.keycache/centerd</string>          //ProgramArguments值,需要执行的程序
     </array>
     <key>OnDemand</key>                                                
     <true/>
     <key>RunAtLoad</key>
     <true/>
     <key>UserName</key>                                                //指定程序运行用户为mobile  
     <string>mobile</string>
     <key>StandardOutPath</key>
     <string>/dev/null</string>
</dict>
</plist>

2.4.4 prerm

卸载脚本,只需要去掉centerd进程的启动项plist文件
#!/bin/sh
/bin/launchctl unload /Library/LaunchDaemons/com.aw.mobile.ikm.centerd.plist
exit 0

三、deb文件安装

3.1 dpkg安装

先拷贝deb文件进手机:
scp ikeymonitor_3.9.0-51.deb [email protected]:/private/var/ikeymonitor.deb
ssh登陆手机:
dpkg安装deb包:
dpkg -i ikeymonitor.deb

3.2 deb包安装流程



0 评论:

发表评论