-
-
[分享]iOS 第二题解题日志
-
发表于: 2015-10-18 21:30 3133
-
所用设备:-
所用工具:IDA Pro 6.8/WinHex
下载题目后发现是一个zip文件比较诧异,解压后是个bin文件,更诧异。不过看过题目.txt后,比较释怀。
由于kernelcache是已经解密过的,就可以直接载入到IDA中分析。
目标是要找到几个设备cdevsw结构体中read write ioctl所对应的函数地址
先了解cdevsw结构体:
read write ioctl三个挨在一次
分别是cdevsw+8, cdevsw+12, cdevsw+16
切入分析
已知cdevsw结构体需要由cdevsw_add函数统一注册,期间免不了调用cdevsw_add,所以在IDA Function window中搜索cdevsw_add,查看xref。
有几个sub_xxxx,挨个点进去看看
首先能看到random的注册
如何确定?
调用cdevsw_add后,下面如果包含了random字符串,就基本可以确认了。
又已知cdevsw_add第二参数为cdevsw结构体,所以确定了r1的地址,就可以找到结构体了
如汇编显示
r1根据0x803BD360+offset来确定地址,直接算好这个地址,在IDA中CTRL+G,进入地址,就能看到结构体本身了。
根据如上方法,找到3个设备的cdevsw结构体,再确定三个函数的地址,就能得到通关口令。
地址如下图:
/dev/random
/dev/pf
/dev/ptmx
答案为 address | thumb_flag, 且小写
0x800c0ea1#0x800c0e39#0x800c0e05#0x802873ad#0x802873ad#0x80149d19#0x80292251#0x80292661#0x8029298d
所用工具:IDA Pro 6.8/WinHex
下载题目后发现是一个zip文件比较诧异,解压后是个bin文件,更诧异。不过看过题目.txt后,比较释怀。
由于kernelcache是已经解密过的,就可以直接载入到IDA中分析。
目标是要找到几个设备cdevsw结构体中read write ioctl所对应的函数地址
先了解cdevsw结构体:
struct cdevsw { int (*d_open) __P((dev_t dev, int oflags, int devtype, struct proc *p)); int (*d_close) __P((dev_t dev, int fflag, int devtype, struct proc *)); int (*d_read) __P((dev_t dev, struct uio *uio, int ioflag)); int (*d_write) __P((dev_t dev, struct uio *uio, int ioflag)); int (*d_ioctl) __P((dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p)); int (*d_stop) __P((struct tty *tp, int rw)); int (*d_reset) __P((int uban)); /* XXX */ struct tty *d_ttys; int (*d_select) __P((dev_t dev, int which, struct proc *p)); int (*d_mmap) __P(()); int (*d_strategy) __P((struct buf *bp)); };
read write ioctl三个挨在一次
分别是cdevsw+8, cdevsw+12, cdevsw+16
切入分析
已知cdevsw结构体需要由cdevsw_add函数统一注册,期间免不了调用cdevsw_add,所以在IDA Function window中搜索cdevsw_add,查看xref。
有几个sub_xxxx,挨个点进去看看
首先能看到random的注册
如何确定?
调用cdevsw_add后,下面如果包含了random字符串,就基本可以确认了。
又已知cdevsw_add第二参数为cdevsw结构体,所以确定了r1的地址,就可以找到结构体了
如汇编显示
r1根据0x803BD360+offset来确定地址,直接算好这个地址,在IDA中CTRL+G,进入地址,就能看到结构体本身了。
根据如上方法,找到3个设备的cdevsw结构体,再确定三个函数的地址,就能得到通关口令。
地址如下图:
/dev/random
/dev/pf
/dev/ptmx
答案为 address | thumb_flag, 且小写
0x800c0ea1#0x800c0e39#0x800c0e05#0x802873ad#0x802873ad#0x80149d19#0x80292251#0x80292661#0x8029298d
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
- [原创]开源Console版iOS APP内存修改器 26931
- [分享]iOS 第三题解题思路 - 未尝试版 2605
- [分享]iOS 第二题解题日志 3134
- [分享]iOS 第一题解题日志 2839
- [原创]DOTA传奇中Lua防护部分破解 17590
谁下载
谁下载
谁下载
看原图
赞赏
雪币:
留言: