ios逆向工程简单笔记《自用》

书本《ios应用逆向工程》

很久之前接触过pc的逆向 asm反汇编  ida等 抽点时间学习ios平台上的 

下面的笔记留给自己查看

 

 

 

ssh 进去 

ps -e 

 

/var/mobile/Containers/Bundle/Application/D4764B09-EBBB-4E16-A340-C23697FF66DD/iQiYiPhoneVideo.app/iQiYiPhoneVideo

 

cycript  -p iQiYiPhoneVideo 

拿到路径

 

[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]

 

获得路径 scp 砸壳工具拷进去 

 

 

scp dumpdecrypted.dylib root@192.168.2.15:/var/mobile/Containers/Data/Application/00D0C999-B488-43A8-9342-83D5EB68801E/Documents/

 

到路径下 执行 砸壳

 

 

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/D4764B09-EBBB-4E16-A340-C23697FF66DD/iQiYiPhoneVideo.app/iQiYiPhoneVideo

 

解密文件再拷贝出来 

 

scp root@192.168.2.15:/var/mobile/Containers/Data/Application/00D0C999-B488-43A8-9342-83D5EB68801E/Documents/iQiYiPhoneVideo.decrypted /Users/damou/Desktop/xxx

 

导出头文件

class-dump -H iQiYiPhoneVideo.decrypted -o ./   


lldb +debugserver 调试

 

手机执行:debugserver *:1234 -a "iQiYiPhoneVideo"

lldb连接  process connectconnect://192.168.2.15:1234   

 

 

otool -l WeChat |grep crypt 是否加壳

 

image list -o -f

 

 

 

br s -a xxx   choose()  po ,p/x , p (char*)x1

 

 

 

grep  xxxx /var/log/syslog

 

[[UIApp keyWindow]recursiveDescription]

 

nextResponder

 

 

 

export THEOS_DEVICE_IP=192.168.2.15

 

 

 export THEOS=/opt/theos

 

 

 

/opt/theos/bin/nic.pl

 

make package install

 

cycript 拿到bundle id

[[NSBundle mainBundle] bundleIdentifier]

 

b readdir

 

 

%orig;

 

%hook

 

 

 

tcpdump -i en0 -X -s0 -w /data.pcap

 

 

logify.pl 生成Tweak.xm  然后创建tweak

 

 

/opt/theos/bin/logify.pl LoginViewController.h >Tweak.xm

 

 

 

 

tip1:使用xcode调试第三方app

 

  1. 将应用程序从设备上拷贝到本地
  2. 利用 ldid 将应用程序的 code sign 导出:ldid -e WeChat >> WeChat.xml
  3. 在 WeChat.xml 文件中添加 get-task-allow 权限   <key>get-task-allow</key> <true/>
  4. 利用 ldid 对应用进行重签名 ldid -SWeChat.xml ./WeChat
  5. 将应用拷回设备,将设置可执行权限 chmod 755 WeChat
  6. 完成

 

tip2:  __RESTRICT,__restrict  

 

保护

在Project的 Other Linker Flags 增加

-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null

下面是修改之后 重新导入

 
  1. ps -e | grep /var 找到AppBinary路径
  2. 把AppBinary复制出
  3. 二进制编辑器(iHex等)修改__RESTRICT和__restrict为其他值。(比如:__RRRRRRRR和__rrrrrrrr。保证长度不变就行啦)
  4. ldid -S AppBinary 重签名。
  5. Cydia中安装 AppSync

 

tip3:反 ptrace反调试 tweak (反lldb命令)

 

app保护

typedefint(*PTRACE_T)(int request, pid_t pid, caddr_t addr,int data);

staticvoidAntiDebug_001()

{

void *handle = dlopen(NULL, RTLD_GLOBAL | RTLD_NOW);

PTRACE_T ptrace_ptr = dlsym(handle, "ptrace");

ptrace_ptr(PT_DENY_ATTACH,0,0,0);

}

 

反保护

#import <substrate.h>
#import <sys/sysctl.h>


static int (*orig_ptrace) (int request, pid_t pid, caddr_t addr, int data);
static int my_ptrace (int request, pid_t pid, caddr_t addr, int data){
    if(request == 31){
NSLog(@"[AntiAntiDebug] - ptrace request is PT_DENY_ATTACH");
return 0;
}
return orig_ptrace(request,pid,addr,data);
}

 

%ctor{
MSHookFunction((void *)MSFindSymbol(NULL,"_ptrace"),(void*)my_ptrace,(void**)&orig_ptrace);
 
NSLog(@"[AntiAntiDebug] Module loaded!!!");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值