ios逆向小试牛刀之操作手记

一、环境准备

    1、vmware中安装osx系统,参照链接:http://jingyan.baidu.com/article/ff411625b9011212e48237b4.html

    2、osx上安装lldb命令行版(安装xcode6.4后lldb版本太低,会造成调试时指令解析错误)

$xcode-select --install
;打印命令行工具路径
$xcode-select -p

   3、ios设备上安装debugserver,参考:http://bbs.iosre.com/t/debugserver-lldb-gdb/65

二、开始调试

    1、附加进程调试

        (1)附加进程

;*.1234 端口号 -a 附加(appname/进程id)
$debugserver *:1234 -a "SpringBoard" 
$debugserver *:1234 -a procID

        (2)osx使用lldb连接

$lldb
lldb)platform select remote-ios                     ;没有sdk效果不好
lldb)process connect connect://(iosip):1234
lldb)image list -o -f             ;列出所有加载的模块基地址
lldb)di -s addr;                  ;-f 反汇编整个函数块 -A thumb/arm模式切换
lldb)b -[T1CommerceOfferHowWorksView setHiddenObserver:] ;下函数名断点
lldb)process continue        ;进程继续执行,类似c
lldb)br s -a base+offset     ;直接根据IDA中获取的函数偏移下函数断点
lldb)br command add 1        ;给断点1增加命令
    command>p i
    command>bt
    command>DONE
lldb)po $r0                  ;ios中特别支持的打印对象数据,特别好用
lldb)x/10xw addr             ;查看内存,类型gdb length 10 x hex w word
lldb)process interrupt       ;强制进程中断
lldb)register read all       ;读取所有的寄存器
lldb)exit                    ;退出

    2、启动进程调试,断在函数入口

         (1) ios上使用debugserver启动可执行程序

$debugserver -x backboard *:1234 /var/mobile/Containers/Bundle/Application/3F55C4D3-FC36-4A08-85D4-287BED0D0B06/APP.app/APP
/private/var/mobile/Containers/Data/Application/306D682A-0A72-4765-AA4B-1881001FE306

        (2)osx上lldb连接调试

$lldb
lldb)process connect connect://192.168.1.104:1234
lldb)ni                ;ni多次直到出现下面
invalid thread
lldb)process interrupt ;此时将进程中断,稍等片刻即可中断
lldb)image list -o -f  ;模块都已经加载,此时是进程最开始时候,可以随便下断点

    3、有符号支持的调试(因没有sdk有条件的同学可以一试)

;将ios设备上的可执行程序下载到osx可以使用scp吧
$target create -arch armv7 ~/APP
$b -[T1CommerceOfferHowWorksView setHiddenObserver:]
$image lookup --address 0x100123aa3 --verbose

三、问题与总结

1、lldb版本太低造成指令解析与ida中不对称

>卸载xcode,使用xcode-select --install直接安装最新的命令行工具,我安装后的版本是340,之前的330会有这个问题

2、脱壳app

>在终端执行下面这条命令,前提是下载好dumpdecrypted.dylib文件即可

DYLD_INSERT_LIBRARIES=/var/root/dumpdecrypted.dylib?/private/var/mobile/Containers/Bundle/Application/1E821425-7743-4D5A-B704-6515694D420A/APP.app/APP 

3、怎么知道app的架构?

>

查看架构

otool -f app

查看架构

lipo -info Twitter

参与链接:

http://versprite.com/og/ios-reverse-engineering-part-one-configuring-lldb/

https://aigudao.net/archives/244.html

http://casatwy.com/shi-yong-lldbdiao-shi-cheng-xu.html

http://bbs.iosre.com/t/debugserver-lldb-gdb/65

你可能感兴趣的:(ios逆向小试牛刀之操作手记)