llvm调试命令

转载 2016年06月01日 10:21:20

转载自:https://everettjf.github.io/2016/05/25/my-ios-debug-cheatsheet

common
查找进程:

ps aux | grep /App
ps -e | grep /Applications
查找文件:

grep -r ToBeFind /System/Library/
分离fat binary

lipo -thin armv7 WeChat.decrypted -output WeChat_armv7.decrypted
lipo -thin armv64 xxx.decrypted -output xxx_arm64.decrypted
class dump

class-dump –list-arches AlipayWallet.decrypted

class-dump -S -s -H WeChat_armv7.decrypted -o dumparmv7
class-dump -s -S -H –arch armv7 AlipayWallet.decrypted -o dumpAlipay
lldb
参考

https://github.com/iosre/iOSAppReverseEngineering
http://objccn.io/issue-19-2/
帮助

help frame
打印UI结构

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

bt (backtrace)
bt all (all threads)
objc_msgSend 参数打印

po r0p(char)r1
p (SEL)$r1
返回地址

p/x $lr
断点

br s -a 0x0023234f
breakpoint set -F “-[NSArray objectAtIndex:]”

br s -a 0x02107730+0x000ab000 -c ‘(BOOL)[(NSString *)$r2 isEqualToString:@”snakeninny”]’

b ptrace
列举模块

image -o -f
lldb基础命令

c
n
s
frame info
expr

thread return
breakpoint command add 1
远程调试

debugserver *:1234 -a AlipayWallet
debugserver -x backboard *:1234 /var/mobile/Containers/Bundle/Application/9DB7CE45-3B4C-42A3-9D4D-49A3A5122903/AlipayWallet.app/AlipayWallet
lldb连接远程调试

(lldb) process connect connect://192.168.199.164:1234
lldb expr例子

(lldb) expr char $str = (char )malloc(8)
(lldb) expr (void)strcpy(str,munkeys)(lldb)exprstr[1] = ‘o’
(char) 0=o(lldb)pstr
(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) watchpoint set expression – (int *)$myView + 8

arm64

param1 x0param2x1

po x0p(char)x1
cycript
参考: http://www.cycript.org/manual/

开始

cycript -p BinaryName
打印UI结构

[[UIWindow keyWindow] recursiveDescription].toString()
[[[UIWindow keyWindow] rootViewController] _printHierarchy].toString()
打印沙盒Documents路径

[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]
基本使用

cy# [#0xb226710 url]
@”ww4fd1rfRDShBo_4K6rqfwAAACMAAQED”

cy# c = #0x1752d8c0
cy#”

相关文章推荐

llvm tools 中命令的简单使用

基本命令的介绍:opt:在中间语言(IR)层优化代码。输入文件必须是LLVM中间语言(LLVM IR),并且输出文件的类型必须与输入文件的类型相同。llc:通过特定的后端讲LLVM二进制代码转换为目标...

LLVM的源代码调试

原文地址:http://llvm.org/docs/SourceLevelDebugging.html#llvm-dbg-declare 引子 本文是与LLVM调试信息相关的所有信息的集大成者。它...

LLVM implementing a language

  • 2015-11-25 09:53
  • 580KB
  • 下载

llvm写编译后端

  • 2015-10-10 15:32
  • 881KB
  • 下载

Xcode 4.4中LLVM compiler 4.0带来的Objective-C新语法特性

今年WWDC 2012苹果全球开发者大会上,苹果针对LLVM编译器都做了重大改进,新版的Xcode 4.4中的LLVM编译器升级到了4.0,给Objective-C带来了很多令人惊喜的特性。 注意,...

LLVM Essentials

  • 2016-08-18 16:17
  • 1.42MB
  • 下载

在CentOS 6.6 64bit上编译安装LLVM3.7,Clang,Libc++和libc++abi

一、简介 LLVM LLVM(之前称为低级虚拟机Low Level Virtual Machine)是一种非常强大的编译器基础架构框架,专门为使用您喜爱的编程语言编写的程序的编译时、链接时和运行时优化...

LLVM2.8的相关文档

  • 2011-06-07 15:43
  • 933KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)