当前位置: 首页 > news >正文

深圳做二维码网站建设深圳装饰装修公司

深圳做二维码网站建设,深圳装饰装修公司,GTA5房产网站建设中,网站流量图片生成起因 在摸索到这个方案之后,mac m1调试aarch64 android kernel最终方案,就准备调试内核了,预备下断点的地方是 b binder_poll b ep_ptable_queue_proc b remove_wait_queue但是由于是android系统,上面三个函数会被频繁的触发&am…

起因

在摸索到这个方案之后,mac m1调试aarch64 android kernel最终方案,就准备调试内核了,预备下断点的地方是

b binder_poll
b ep_ptable_queue_proc
b remove_wait_queue

但是由于是android系统,上面三个函数会被频繁的触发,不知道哪次断下的是自己提供的进程触发的,所以准备使用条件断点,只在自己的进程触发下断下。这个条件断点的首要目标是获取aarch kernel的current

观察高版本内核gdb相关代码,目标是获取SP_EL0的值

def get_current_task(cpu):task_ptr_type = task_type.get_type().pointer()if utils.is_target_arch("x86"):var_ptr = gdb.parse_and_eval("&current_task")return per_cpu(var_ptr, cpu).dereference()elif utils.is_target_arch("aarch64"):current_task_addr = gdb.parse_and_eval("$SP_EL0")if((current_task_addr >> 63) != 0):current_task = current_task_addr.cast(task_ptr_type)return current_task.dereference()

困难

狗币google,最新的android emulator使用的qemu版本还是qemu-2.10.0,无法通过gdb获取系统寄存器的值,也就是没办法获取SP_EL0

解决-重编android emulator

重编android kernel

添加CONFIG_GDB_SCRIPTS=y配置,使gdb附加上时,lx-系列命令自动可用

编译android emulator

https://android.googlesource.com/platform/external/qemu/+/emu-master-dev/android/docs/LINUX-DEV.md
https://android.googlesource.com/platform/external/qemu/+/emu-master-dev

下载android emulator并编译

# 1、环境,以及下载源码
sudo apt-get install -y git build-essential python qemu-kvm ninja-build python-pip ccachemkdir $HOME/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > $HOME/bin/repo
chmod 700 $HOME/bin/repo
export PATH=$PATH:$HOME/binmkdir -p emu-master-dev && cd emu-master-dev
repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev
repo sync -j 8
cd external/qemu# 2、配置ccache# 3、编译
python3 android/build/python/cmake.py --noqtwebengine --noshowprefixforinfo --target linux_aarch64 --ccache auto

这个时候就知道android emulator使用的版本到底有多老了qemu-img -V

修改qemu - gdbstub64

https://stackoverflow.com/questions/46415059/how-to-observe-aarch64-system-registers-in-qemu
https://lists.gnu.org/archive/html/qemu-arm/2020-05/msg00703.html
https://github.com/qemu/qemu/commit/200bf5b7ffe

这里只是做测试,把x1,x2等寄存器替换为了SP_EL0,时间够,以后再改
target/arm/gdbstub64.c


int aarch64_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n)
{ARMCPU *cpu = ARM_CPU(cs);CPUARMState *env = &cpu->env;// 这里进行测试 beginif (n == 1 || n == 2 || n ==3) {return gdb_get_reg64(mem_buf, env->sp_el[0]);}// 这里进行测试 endif (n < 31) {/* Core integer register.  */return gdb_get_reg64(mem_buf, env->xregs[n]);}switch (n) {case 31:return gdb_get_reg64(mem_buf, env->xregs[31]);case 32:return gdb_get_reg64(mem_buf, env->pc);case 33:return gdb_get_reg32(mem_buf, pstate_read(env));}/* Unknown register.  */return 0;
}

修改完毕后,继续重编android emulator

修改android-goldfish-4.4-dev gdb相关脚本

goldfish/scripts/gdb/linux/cpus.py

task_type = utils.CachedType("struct task_struct")class LxCurrentFunc(gdb.Function):"""Return current task.$lx_current([CPU]): Return the per-cpu task variable for the given CPU
number. If CPU is omitted, the CPU of the current context is used."""def __init__(self):super(LxCurrentFunc, self).__init__("lx_current")def invoke(self, cpu=-1):task_ptr_type = task_type.get_type().pointer()# 我在gdbstub64.c中将x1替换为了SP_EL0# 后期再改,这里只实验是能获取currentcurrent_task_addr = gdb.parse_and_eval("$x1")gdb.write(str(hex(current_task_addr)))if((current_task_addr >> 63) != 0):current_task = current_task_addr.cast(task_ptr_type)return current_task.dereference()

使用

下一个断点,在自己的进程运行起来之后断下,目的:通过lx-ps查看该进程的pid

pwndbg> lx-ps
0xffffffc02a8f7000 2343 AsyncTask #1
0xffffffc02a8f3800 2345 ExecutorUtils
0xffffffc02d4dd400 2367 android_tese  <<<<<<<<<<< 

下断点,测试
我在gdbstub64.c中将x1替换为了SP_EL0,后期再改,这里只实验是能获取current

b binder_poll if ((struct task_struct)(*$x1)).pid == 2367
b ep_ptable_queue_proc if ((struct task_struct)(*$x1)).pid == 2367
b remove_wait_queue if ((struct task_struct)(*$x1)).pid == 2367

在这里插入图片描述

http://www.yayakq.cn/news/218871/

相关文章:

  • 湖南网站建设公找人做网站排名优化
  • 网站开发 保密期限商业空间设计调研
  • windows server 2008 网站配置搭建网站seo
  • 网站建设多少钱专业国内购物网站哪个最好
  • 漯河网站建设服务公司wordpress 3.1 下载地址
  • 辽宁网站建设哪里好网站服务器哪个好
  • 怎么在赶集网上做招聘网站wap浏览器网页版
  • 黔东南州住房和城乡建设局网站wordpress 文章简介
  • 玉田县建设局网站wordpress如何链接
  • 网站网页栅格化大梦想小程序商店
  • 网站设计制作价钱株洲搜索引擎优化
  • 专业企业网站建设报价拔别人的网站做网站合法吗
  • 做图文的网站网站免费推广100种方法
  • 陵水网站建设友创科技网站开发与建设方向
  • 数据分析网站html模板下载商标注册证电子版查询
  • 网站建设仟金手指专业12仿cnzz 网站 源码
  • 宣传页面怎么制作专业网站seo推广
  • 做亚马逊运营要看哪些网站网站开发 占位符
  • 网站制作用什么编程微信官方网站登陆
  • 变化型网页网站有哪些代理公司注册变更
  • PHP网站开发常用函数汕头网站推广优化
  • 西部数码官方网站建行个人余额查询系统官网
  • 2018做技术分享网站有前景吗教育网站
  • 如何用百度云文件做网站wordpress建站和定制网站Seo
  • 自己网站建设和维护谷歌入口
  • aspcms 网站标签调用python做软件的网站
  • 网站建设及系统开发和wordpress类似的框架
  • 网站开发者所有权归属济南商务网站建设
  • 网站运营托管如何做网站图片切换
  • wordpress博客网站换域名对网站的影响