U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > 土豆PE使用教程 >

使用lldb和hopper计算函数地址给运行中的app添加断点

来源:http://www.tudoupe.com时间:2022-02-26

文章目录

  • 原理讲解
  • 使用hopper找到你要下断点的macho-o文件里的函数地址的方法
  • 通过越狱手机连接上mac,并且进入lldb
  • 查看app所有段落和偏移量: -f是完整路径 -o是偏移量
  • 在lldb里通过计算后的内存地址设置断点

原理讲解

hopper是分析macho文件的里面的函数地址,是macho文件中的函数地址.而macho文件运行在内存中以后,macho文件的段落里的PAGEZERO端会改变大小,所以导致后面的段落后向后移动,因为代码段的大小在加载在虚拟内存后不会改变,所以虚拟内存中的函地址,可以通过pagezero端的大小,也就是代码段后面的便宜量+ hopper里函数的地址相加得到.
具体操作是:偏移量可以通过lldb的 image list -o -fc查出段落的偏移量,让段落的偏移量+hopper中的函数的代码段的偏移量 得到真实的内存中函数的偏移量

使用hopper找到你要下断点的macho-o文件里的函数地址的方法

例如,我通过theos tweek已经在BaseMsgContentViewController控制器里,把所有的方法都添加了打印信息.

的TextDidChanged方法下hook了打印的方法
下面这篇文章是关于如何使用theos给一个控制器的所有方法都用logify.pl脚本自动添加上所有打印信息
ios使用theos的 logify.pl自动hook .h头文件中所有的方法

例如其中BaseMsgContentViewController这个文件是发送信息时候的控制器,里面每次文字改变会调用下面的方法,里面也添加了打印信息,如下面代码

通过控制台打印,可以看到当手机微信输入789的时候,函数被打印了如下图:
在这里插入图片描述

打开Hopper Disassembler,把脱壳以后的app的mach-o文件拖拽进去.
脱壳请查看我写的这篇文章
ios脱壳工具frida使用教程和各种踩坑总结(app store可用脱壳)
拖拽进去脱壳后的macho-o文件以后如下
搜索,要查找的文件名 和 函数名,中间用空格分开,例如

找到hopper搜搜到的函数地址

在这里插入图片描述

例如,上图,的函数地址:00000001034d0be8
这个地址是没加载到虚拟内存的地址.一旦加载到虚拟内存以后,地址会存在一个偏移量.

通过越狱手机连接上mac,并且进入lldb

具体操作参见这篇文章
ios 让debugserver可以调试任意app
usb连接上越狱手机后再手机端ssh输入:

mac端输入:

查看app所有段落和偏移量: -f是完整路径 -o是偏移量

打印结果如下:

找到上面第0行 wechat.app这行,这行开头的地址0x00000000025cc000 是这个app的偏移量
设置函数虚拟内存里的断点就是这个偏移量+ hopper里的函数偏移量
通过下断点指令

在lldb里通过计算后的内存地址设置断点

例如这个函数下的断点的地址就是如下,注意添加0x开头,因为) image list -o -f 和hopper里复制的地址都是16进制的.用+加号相加

得到结果下断点成功

下面按下c,让app继续执行,相当于xcode的F9

之后我退出聊天页面再重新进入,再用键盘输入文字,发现lldb在断点停住了
原因显示是 :因为断点breakpoint 1.1

代表你设置断点成功了,如下图
在这里插入图片描述

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息