背景
OD(OllyDbg)2.x之前的版本只支持x86调试,作者虽然说2.x会支持x64调式,但一直没更新。随着iTunes开始支持64位后,现在对iTunes的分析主要用X64Dbg工具了,不但开源的,作者还持续不断的在更新,兼容OD原有的使用方式,提供更多好用的辅助,之前分析32位iTunes时,写过一些辅助脚本,这里分享一个查看iTunes内存中CFDictionary,CFArray,Plist等内容的脚本,可以把它们dump出来为plist文件,是你分析AppleID登录,刷榜的得力助手。
实现代码
;查看某地址所指CFDictionary,CFArray等对应的XML表示,方便查看数据包内容,不用写hook来查看 Edited By xyq@2017-3-23 17:17:50
mov myret , eip
pusha
exec
push 0
push 0
push 64 ;C8h 表示二进制plist,64h表示xml plist
push 1A37D460 ;ecx可以是任何指向能转换为plist的CFXXX指针
push 0
call CFPropertyListCreateData
add esp , 14 ;栈平衡
ende
mov plistPointer , eax
cmp eax,0 ;并不是所有CFDict,CFArray都能转换为plist,因此判断下转换结果
jnz lbl_output
;msg "CFPropertyListCreateData call faild"
log "CFPropertyListCreateData call faild"
exec
push 1A37D460 ;ecx可以是任何指向能转换为plist的CFXXX指针
call CFShow ;通过CFShow显示无法转换为plist的数据
add esp , 4
ende
jmp lbl_end
lbl_output:
;get xml pointer
exec
push eax
call CFDataGetBytePtr
add esp , 4
ende
mov xmlPointer , eax
log eax
gstr eax ;指针所指的地方转换为字符串
log $RESULT
;msg $RESULT ;XMLPlist太长脚本窗口看不到完整字符串,则Pause时内存窗口查看eax既可
;get xml length
mov eax , plistPointer
exec
push eax
call CFDataGetLength
add esp , 4
ende
mov xmlLen , eax
dm xmlPointer , xmlLen , "d:\oddump.plist"
lbl_end:
mov eip , myret
popa
ret
使用说明
OD调式iTunes时,如果你分析到某个内存或者EAX等认为是CFDictionary之类内容时候,就可以在插件菜单加载本脚本执行,即可在D盘根目录看到想要输出了,具体细节参考注释,有疑问可以联系我有疑问到我微信公众号留言
网友评论