首页
社区
课程
招聘
未解决 [求助]ios逆向。ida中的问题。希望大佬救救
发表于: 2024-6-5 18:15 2023

未解决 [求助]ios逆向。ida中的问题。希望大佬救救

2024-6-5 18:15
2023

v19 = objc_retainAutoreleasedReturnValue(objc_msgSend(&OBJC_CLASS___NSNumber, "numberWithUnsignedInt:", objc_msgSend(v14, "key")));

有这样一段代码。 首先,通过 objc_msgSend(v14, "key") 调用 v14 对象的 key 方法,获取一个无符号整数值。
然后,使用 objc_msgSend 调用 NSNumber 类的 numberWithUnsignedInt: 方法,将上一步获取的无符号整数值作为参数传入,创建一个 NSNumber 对象。

也就是说 v19 是一个NSNumber对象。

ida中v19 在 x24寄存器中。 截图如下

这个x24处 并非是一个标准的内存地址。希望大佬帮忙指点一下。这是什么东西。
MEMORY:AAAE9D759F23723D % 1
MEMORY:AAAE9D759F23723E % 1
MEMORY:AAAE9D759F23723F % 1
MEMORY:AAAE9D759F237240 % 1
MEMORY:AAAE9D759F237241 % 1
MEMORY:AAAE9D759F237242 % 1
MEMORY:AAAE9D759F237243 % 1
MEMORY:AAAE9D759F237244 % 1
MEMORY:AAAE9D759F237245 % 1
MEMORY:AAAE9D759F237246 % 1
MEMORY:AAAE9D759F237247 % 1
MEMORY:AAAE9D759F237248 % 1
MEMORY:AAAE9D759F237249 % 1
MEMORY:AAAE9D759F23724A % 1
MEMORY:AAAE9D759F23724B % 1

希望大佬给指点迷津。。。。。。。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 3343
活跃值: (3391)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
pac 了解下
2024-6-5 18:21
0
雪    币: 100
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
小调调 pac 了解下
大侠 能展开说说吗
2024-6-5 19:17
0
雪    币: 669
活跃值: (2178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
根据2楼大佬给的关键字 找到的文章不知道是否正确
https://seanchense.github.io/2019/10/01/pointer-authentication/
2024-6-6 09:04
0
雪    币: 3343
活跃值: (3391)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
  • Similarly, function pointers created manually (e.g. by using a direct offset + slide) cannot be called directly either.
  • Trying to access the contents of a signed function pointer is no longer possible, you will segfault.
  • You can use the following header to convert between PACed and non-PACed pointers. It just wraps the intrinsics so your code will still compile if the toolchain doesn't understand arm64e yet.
  • If you encounter an issue you believe is caused by our version of Substitute, let us know.
#ifndef PTRAUTH_HELPERS_H
#define PTRAUTH_HELPERS_H
// Helpers for PAC archs.

// If the compiler understands __arm64e__, assume it's paired with an SDK that has
// ptrauth.h. Otherwise, it'll probably error if we try to include it so don't.
#if __arm64e__
#include <ptrauth.h>
#endif

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-function"

// Given a pointer to instructions, sign it so you can call it like a normal fptr.
static void *make_sym_callable(void *ptr) {
#if __arm64e__
    ptr = ptrauth_sign_unauthenticated(ptrauth_strip(ptr, ptrauth_key_function_pointer), ptrauth_key_function_pointer, 0);
#endif
    return ptr;
}

// Given a function pointer, strip the PAC so you can read the instructions.
static void *make_sym_readable(void *ptr) {
#if __arm64e__
    ptr = ptrauth_strip(ptr, ptrauth_key_function_pointer);
#endif
    return ptr;
}

#pragma clang diagnostic pop
#endif


最后于 2024-6-7 17:57 被小调调编辑 ,原因:
2024-6-7 17:56
0
游客
登录 | 注册 方可回帖
返回
//