-
-
[原创]Writeups
-
发表于: 2015-10-20 08:32 1858
-
因为手头只有一个 iPhone 5 是 jailbroken 的, 因此只选择分析了 armv7 的
1. 用 task_for_gid enabled entitlement 重新 codesign. Load 到 debugger. 处理 button tap 的是在 [ViewController onClick] 里面. 其中:
0xB7A4 处得到 [[self textField] text UTF8String] 即输入的 char *
0xB7A6 处 R6 即包含解密后的原 char *.
0xB7B8 处 CMP R1, R0 即比较是否相符.
R6 中包含的原文是在 0xB6AC - 0xB762 处 decrypt 出来的.
直接在 0xB7A6 处设断点. Run. 检查 R6 包含的地址处的字符串, 即为答案.
2. 直接用 IDA Pro load 这个 kernelcache. 检查 cdevsw_add() 的调用点, 再与 apple release 出来的 xnu source code 对照, 即可得结果.
顺便说一下答案里的 a to f 字符一定要小写才接受太不合理, 害得我又重新检查一遍.
3. 该题 0xb0cc 处 BL sub_1dcb8 即为检查函数. 在 sub_1dcb8 里的执行过程利用 0x13eb4 和 0x13ee8 处两段代码执行指令的跳转执行 从而起到混淆打乱指令流的作用.
0x13eb4 代码块的作用是将执行跳转到 0x1dcf8 + R0 * 4 + 4 处执行
0x13ee8 的作用是将执行跳转到 LR + [LR] 处执行.
从 0x1dcb8 到 0x200c6 为初始化部分. 然后进入从 0x200c6 开始的一盒循环体. 循环次数为 147+输入字符串长度.
剩下就是体力活.
可以写个程序来恢复被 13eb4/13ee8 打乱的指令流并 rebuild 一个 Mach-O binary. 或者利用逐指令跟踪来跟踪指令流. 不过在这点时间里肯定都来不及做.
如果有非体力活的并且短时间内能搞定的好办法还请赐教. 谢谢.
1. 用 task_for_gid enabled entitlement 重新 codesign. Load 到 debugger. 处理 button tap 的是在 [ViewController onClick] 里面. 其中:
0xB7A4 处得到 [[self textField] text UTF8String] 即输入的 char *
0xB7A6 处 R6 即包含解密后的原 char *.
0xB7B8 处 CMP R1, R0 即比较是否相符.
R6 中包含的原文是在 0xB6AC - 0xB762 处 decrypt 出来的.
直接在 0xB7A6 处设断点. Run. 检查 R6 包含的地址处的字符串, 即为答案.
2. 直接用 IDA Pro load 这个 kernelcache. 检查 cdevsw_add() 的调用点, 再与 apple release 出来的 xnu source code 对照, 即可得结果.
顺便说一下答案里的 a to f 字符一定要小写才接受太不合理, 害得我又重新检查一遍.
3. 该题 0xb0cc 处 BL sub_1dcb8 即为检查函数. 在 sub_1dcb8 里的执行过程利用 0x13eb4 和 0x13ee8 处两段代码执行指令的跳转执行 从而起到混淆打乱指令流的作用.
0x13eb4 代码块的作用是将执行跳转到 0x1dcf8 + R0 * 4 + 4 处执行
0x13ee8 的作用是将执行跳转到 LR + [LR] 处执行.
从 0x1dcb8 到 0x200c6 为初始化部分. 然后进入从 0x200c6 开始的一盒循环体. 循环次数为 147+输入字符串长度.
剩下就是体力活.
可以写个程序来恢复被 13eb4/13ee8 打乱的指令流并 rebuild 一个 Mach-O binary. 或者利用逐指令跟踪来跟踪指令流. 不过在这点时间里肯定都来不及做.
如果有非体力活的并且短时间内能搞定的好办法还请赐教. 谢谢.
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
看原图
赞赏
雪币:
留言: