首页
论坛
课程
招聘
[未解决,已结帖] frida是如何修改内存中代码的 100.00元
2021-4-9 20:58 2002

[未解决,已结帖] frida是如何修改内存中代码的 100.00元

2021-4-9 20:58
2002

刚翻了下gumcodeallocator.c和gumarmwriter.c,看的比较迷,好像只把汇编保存到了对象里,后续的commit、flush等函数也没有调用写内存的相关函数。请大佬指点一下!


第五届安全开发者峰会(SDC 2021)议题征集正式开启!

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 236
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
卡卡鸡 活跃值 2021-4-9 21:04
2
0
看了guminterceptor.c,得知会在函数进入的时候创建一个跳板跳到自定义的onEnter函数,他应该要写一条b指令跳过去,但一直没找到,希望能有大佬指点下,最好带一下源码,谢谢!
雪    币: 252
活跃值: 活跃值 (188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
327135569 活跃值 2021-4-10 01:00
3
0

好理解, 看这 Hook 两个函数的例子.

  gum_interceptor_begin_transaction (interceptor);
  gum_interceptor_attach (interceptor,
      GSIZE_TO_POINTER (gum_module_find_export_by_name (NULL, "open")),
      listener,
      GSIZE_TO_POINTER (EXAMPLE_HOOK_OPEN));
  gum_interceptor_attach (interceptor,
      GSIZE_TO_POINTER (gum_module_find_export_by_name (NULL, "close")),
      listener,
      GSIZE_TO_POINTER (EXAMPLE_HOOK_CLOSE));
  gum_interceptor_end_transaction (interceptor);

gum_interceptor_attach  调 gum_interceptor_instrument 调 _gum_interceptor_backend_create_trampoline  创建跳板, 你要的 bl 就在这里面. 根据平台不同, 举例 mips 吧就在 https://github.com/frida/frida-gum/blob/56dd9ba3ee9a5511b4b0c629394bf122775f1ab7/gum/backend-mips/guminterceptor-mips.c#L161


另, 这些都是准备跳板, 最终执行写入的在 

gum_interceptor_end_transaction

这行代码里, 进去搜 memcpy 就看到了.


游客
登录 | 注册 方可回帖
返回