美文网首页
iOS 逆向基本

iOS 逆向基本

作者: 77168ddcf2c6 | 来源:发表于2018-05-11 10:01 被阅读19次

1. 查看信息相关

  • 查看越狱设备所有的APP的BundleID (前提需要安装frida-iOS-dump)

MacBookPro:frida-ios-dump-master lemon$ ./dump.py -l

  • 查看设备UDID (前提需要安装ideviceinstall)

MacBookPro:~ lemon$ idevice_id -l

  • 查看iPA是否已经砸壳 (如果返回cryptid=0代表已砸壳,否则代表未砸壳)

MacBookPro:~ lemon$ otool -l target.app/target | grep cryptid

  • 查看设备日志

MacBookPro:~ lemon$ idevicesyslog -u deviceudid

  • 给特定的设备安装程序

MacBookPro:~ lemon$ ideviceinstaller -i target.ipa -u deviceudid

  • 砸壳 (使用frida)

MacBookPro:frida-ios-dump-master lemon$ ./dump.py BundleID

  • class-dump头文件

MacBookPro:~ lemon$ class-dump -s -S -H target.app/target -o /path/to/save/header

  • 查看动态库架构

lipo -info

  • ssh

ssh root@deviceip

  • 查找进程

ps aux | grep /App
ps -e | grep /Applications

  • 查找文件

grep -r Header /System/Library/

  • 分离fat binary

lipo -thin armv7 WeChat.decrypted -output WeChat_armv7.decrypted
lipo -thin arm64 xxx.decryptec -output xxx.arm64.decrypted

2. LLDB

  • 打印UI结构

po [[[UIWindow keyWindow] rootViewController] _printHierarchy] (iOS 8)
po [[UIWindow keyWindow] recursiveDescription]

  • 打印调用栈信息

bt (backtrace)
bt all (all threads)

  • objc_msgSend参数打印

po $xo

p (char*)$x1

p (SEL)$x1

  • 返回地址

p/x $lr

  • 增加断点

b -a ox00002224

  • 列举模块

image lisg -o -f

  • lldb基础指令

c
n
ni
br list
br del
br dis
br en

  • 远程调试

debugserver *:1234 -a pid

debugserver -x backboard *:1234 /var/mobile/Containers/Bundle/Application/9DB7CE45-3B4C-42A3-9D4D-49A3A5122903/AlipayWallet.app/AlipayWallet

  • 远程连接

proces connect connect://192.168.2.154:1234

  • lldb expr例子

(lldb) expr char *$str = (char *)malloc(8)

(lldb) expr (void)strcpy($str, "munkeys")

(lldb) expr $str[1] = 'o'

(char) $0 = 'o'

(lldb) p $str

(char *) $str = 0x00007fd04a900040 "monkeys"

(lldb) x/4c $str

(lldb) x/1w $str + 3

(lldb) expr (void)free($str)

(lldb) expr id $myView = (id)0x7f82b1d01fd0

(lldb) expr (void)[$myView setBackgroundColor:[UIColor blueColor]]

(lldb) expr (void)[CATransaction flush]

(lldb) po [$myButton allTargets]

(lldb) p (ptrdiff_t)ivar_getOffset((struct Ivar *)class_getInstanceVariable([MyView class], "_layer"))

  • 给断点增加命令
(lldb) br command add 1
Enter your debugger command(s).  Type 'DONE' to end.
> register read $rdi 
> c 
> DONE
(lldb)
  • 修改寄存器的值

register write x0 1

3. Cycript

  • 查看当前界面的元素层级结构

cy# [[UIApp keyWindow]recursiveDescription].toString()

  • 查看当前keywindow的根控制器的所有subView

cy# [[[UIApp keyWindow] rootViewController] _printHierarchy].toString()

  • 输出简单的视图信息

cy# [[UIApp keyWindow] _autolayoutTrace].toString()

  • 查看一个实例的所有ivar

cy# [choose(SBApplication)[0] _ivarDescription].toString()

  • 查看一个class的对象方法和类方法

cy# [choose(SBApplicationController)[0] _methodDescription].toString()

  • 访问对象和实例
cy# [#0xb226710 url]
@"ww4fd1rfRDShBo_4K6rqfwAAACMAAQED"

cy# c = #0x1752d8c0
cy#"<FavAudioPlayerController: 0x1752d8c0; frame = (0 0; 290 60); autoresize = W; layer = <CALayer: 0x172dc2b0>>"
cy# c->m_audioInfo
cy#"<FavAudioInfo: 0x172b2a30>"
cy# c->m_audioInfo.m_nsAudioPath

4. ARM

5. 工具

相关文章

  • iOS逆向编程第二篇:基本汇编(1)

    我们在学习iOS逆向编程开发之前,我们要了解一个基本的逆向原理。首先我们是iOS系统上面的App是我们逆向的目标,...

  • 一 iOS 逆向工程概述

    1 什么是iOS逆向工程 2 iOS逆向的目的 3 iOS逆向过程以及方法 一 什么是iOS逆向工程 iOS逆向...

  • iOS逆向学习

    参考文章:iOS逆向开发记录:iOS逆向之手机越狱iOS逆向之介绍iOS逆向之文件系统结构iOS逆向之文件权限及类...

  • iOS 逆向基本

    1. 查看信息相关 查看越狱设备所有的APP的BundleID (前提需要安装frida-iOS-dump) Ma...

  • 初识汇编

    逆向课程随堂笔记 001--初识汇编 我们在学习逆向开发之前,我们要了解一个基本的逆向原理.首先我们是逆向iOS系...

  • iOS逆向之反HOOK的基本防护

    iOS逆向之Method Swizzle iOS逆向之fishHook原理探究 iOS逆向之fishHook怎么通...

  • 初识汇编(一)

    前言 我们在学习逆向开发之前,我们要了解一个基本的逆向原理.首先我们是逆向 iOS 系统上面的 APP .那么我们...

  • iOS 逆向开发(三)代码分析-dump-class/Hoppe

    iOS逆向系列: 1、iOS 逆向开发(一)界面分析 - Cycript&Reveal2、iOS 逆向开发(二)砸...

  • iOS 逆向开发(二)砸壳/脱壳-Clutch、dumpdecr

    iOS逆向系列: 1、iOS 逆向开发(一)界面分析 - Cycript&Reveal2、iOS 逆向开发(二)砸...

  • 初识汇编(1)

    摘要: 我们在学习逆向开发之前,我们要了解一个基本的逆向原理.首先我们是逆向iOS系统上面的APP.那么我们知道,...

网友评论

      本文标题:iOS 逆向基本

      本文链接:https://www.haomeiwen.com/subject/buoxdftx.html