iOS Swift逆向——deMangle过程中的偏移计算
碰到好多函数最开始都会调用这个函数,xref了一下,发现有上万个xref。
__int64 __fastcall sub_1000B6ED0(__int64 *a1)
{__int64 result; // x0result = *a1;if ( result < 0 ){result = swift_getTypeByMangledNameInContext((char *)a1 + (int)result, -(result >> 32), 0LL, 0LL);*a1 = result;}return result;
}
计算实现De-Mangle,可以给sub开头的方法做备注了。
以下面这个ref为例:
v8 = sub_1000B6ED0(&unk_1039839C0);
__data:00000001039839C0 unk_1039839C0 DCB 0x1C ; DATA XREF: sub_1000219E0+34↑o
__data:00000001039839C0 ; sub_1000219E0+88↑o ...
__data:00000001039839C1 DCB 0x80
__data:00000001039839C2 DCB 0x4D ; M
__data:00000001039839C3 DCB 0xFF
__data:00000001039839C4 DCB 0xF9
__data:00000001039839C5 DCB 0xFF
__data:00000001039839C6 DCB 0xFF
__data:00000001039839C7 DCB 0xFF
__data:00000001039839C8 unk_1039839C8 DCB 0xB8 ; DATA XREF: sub_10010950C+18↑o
__data:00000001039839C8 ; sub_1002C06B0↑o ...
__data:00000001039839C9 DCB 0x2A ; *
__data:00000001039839CA DCB 0x4B ; K
__data:00000001039839CB DCB 0xFF
__data:00000001039839CC DCB 0xFA
__data:00000001039839CD DCB 0xFF
__data:00000001039839CE DCB 0xFF
__data:00000001039839CF DCB 0xFF
unk_1039839C0这个整理出来,地址对应X19寄存器,值对应X0寄存器
X0 = 0xFFFFFFF9FF4D801C
X19 = 0x1039839C0
写个python模拟计算一下:
def asr(value, shift):# 算术右移函数if value & (1 << 63):# 如果最高位是1,表示负数,需要填充1return (value >> shift) | (0xFFFFFFFFFFFFFFFF << (64 - shift))else:# 否则直接右移return value >> shiftdef sxtw(value):# 符号扩展32位到64位if value & (1 << 31):# 如果最高位是1,表示负数,需要填充1return value | 0xFFFFFFFF00000000else:# 否则直接返回return value# 初始值
X0 = 0xFFFFFFF9FF4D801C
X19 = 0x1039839C0
# 算术右移32位
shifted_value = asr(X0, 32)# 取负值并确保结果在64位范围内
X1 = (-shifted_value) & 0xFFFFFFFFFFFFFFFF# 打印结果
print(f"X1 = 0x{X1:016X}")# 符号扩展W0到64位
extended_W0 = sxtw(X0 & 0xFFFFFFFF)# 相加并确保结果在64位范围内
X0 = (X19 + extended_W0) & 0xFFFFFFFFFFFFFFFF# 打印结果
print(f"X0 = 0x{X0:016X}")
输出结果:
X1 = 0x0000000000000007
X0 = 0x0000000102E5B9DC
byte_102E5B9DC这个字段的长度正好是7

这个名字IDA自动给出了Demangle之后的内容。使用命令行也可以自己解析:
swift demangle s10Foundation3URLVMn
$s10Foundation3URLVMn ---> nominal type descriptor for Foundation.URL
相关文章:
iOS Swift逆向——deMangle过程中的偏移计算
碰到好多函数最开始都会调用这个函数,xref了一下,发现有上万个xref。 __int64 __fastcall sub_1000B6ED0(__int64 *a1) {__int64 result; // x0result *a1;if ( result < 0 ){result swift_getTypeByMangledNameInContext((char *)a1 (int)result…...
国产大模型基础能力大比拼 - 计数:通义千文 vs 文心一言 vs 智谱 vs 讯飞-正经应用场景的 LLM 逻辑测试
在大语言模型(LLM)不断涌现的时代,如何评估这些国产大模型的逻辑推理能力,尤其是在处理基础计数问题上的表现,成为了一个备受关注的话题。随着越来越多的国产大模型进入市场,比较它们在不同任务中的表现尤为…...
YOLO11改进 | 注意力机制 | 正确的 Self-Attention 与 CNN 融合范式,性能速度全面提升【独家创新】
秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 卷积和自注意力是两种强大的表征学习技术…...
0基础学java之Day11
二维数组 静态二位数组 理解:二维数组中包含了多个一维数组 声明: 数据类型 变量名;--推荐 数据类型 变量名; //静态初始化1//String[][] names new String[][]{{"小红","小绿","小蓝"},{"小黄","小紫…...
python主流框架Django:ORM框架关联查询与管理器
目录 注意 使用前要调用之前的模型类 F对象 Q对象 聚合函数 排序 关联查询(连表查询) 修改 删除 查询集 QuerySet 注意 使用前要调用之前的模型类 F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用 "F对象&quo…...
如何有效维护您的WordPress在线商店内容:提高客户参与度与转化率的实用技巧
在电子商务领域,内容为王。新鲜、相关且有吸引力的内容能显著提升客户参与度和转化率。本文将探讨如何有效更新和维护您的在线商店内容,确保客户始终获得最佳体验。 定期更新产品信息 产品描述 产品描述是吸引客户和促成销售的关键。定期检查并更新产…...
【Java】认识异常
1.异常概念与体系结构 1.1异常的概念 在我们日常开发中,代码都是尽可能完善,但是难免会出现一些奇奇怪怪的问题。而这些奇奇怪怪的问题可能很难通过代码去控制,比如格式不对会报错,网络不好也会报错等。 在Java中,将…...
20 Shell Script输入与输出
标出输入、标准输出、错误输出 一、程序的基本三个IO流 一)文件描述符 任何程序在Linux系统中都有3个基本的文件描述符 比如: cd/proc/$$/fd 进入当前shell程序对于内核在文件系统的映射目录中: [rootlocalhost ~]# cd /proc/$$/fd [rootlocalhos…...
HCIP-HarmonyOS Application Developer 习题(十六)
(判断)1、HiLink通过分布式软总线的方式连接所有设备,强能力设备可对弱能力设备进行设备虚拟化,将弱设备当做本机设备直接调用。 答案:错误 分析:HiLink 主要针对的是应用开发者与第三方设备开发者…...
没有什么可以抵达乌托邦,包括AI
本文为《智人之上:从石器时代到AI时代的信息网络简史》书评 可以说,尤瓦尔赫拉利又一次让我们获得了理解人类文明的新视角。 这是他一直以来都在做的:构建理解人类文明史的新知识框架。从此前的《人类简史》《未来简史》《今日简史》,到今天的新书《智人之上》,他一直保…...
家庭事务管理系统|基于java和vue的家庭事务管理系统设计与实现(源码+数据库+文档)
家庭事务管理系统 目录 基于java和vue的家庭事务管理系统 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师,阿里云…...
doris创建异步物化视图(加速数据低频变更的复杂实时计算)
异步物化视图,可以把那些每次实时计算非常耗时的,而需要计算的数据变更比较低频的这些计算创建对应的异步物化视图,当相关数据变化的时候触发异步任务去更新计算结果,或者定时计算也可以。例如该处示范为计算订单的订单标识&#…...
PhpSpreadsheet创建带复杂表头的excel数据
目录 一:背景 二:excel表头数据实现 三:excel渲染数据实现: 四:最终效果如下: 一:背景 最近需要统计一些数据,导出到excel,主要是一些区域的人员销售统计数据,涉及到复杂的表头和…...
BurpSuite渗透工具的简单使用
BurpSuite渗透工具 用Burp Suite修改请求 step1: 安装Burp Suite。官网链接:Burp Suite官网 step2: 设置代理 step3: 如果要拦截https请求,还需要在客户端安装证书 step4: 拦截到请求可以在Proxy ->…...
洞察云上风险,主机安全尽在掌握
在实战攻防演练中,主机一直是攻击方的最终目标。作为网络架构中的重要组成部分,主机包含了大量的敏感数据、关键服务和系统资源。同时主机拥有网络资源的访问权限,攻击者通过入侵主机获得权限,进而控制整个网络或系统。因此做好主…...
使用kimi编辑助手,开始搭建一个微信小程序!第一天
为什么开源?因为不开源,一个人开发小程序,一点突如其来的变故就会导致自己整体处于一个不舒服的状态,同时自己从0开始1开始搭建小程序,也是自己个体之间能力的验证! 目前小程序版本:2.5.2 目前…...
【已解决】libev not found
学习韦东山老师的Linux应用开发实验班的JSON部分,在编译JSON包的过程中 报错命令: ./configure --hostarm-buildroot-linux-gnueabihf -prefix$PWD/tmp 错误信息: checking for libev support... checking for arm-buildroot-linux-gnue…...
qt QVariant详解
QVariant是Qt框架中一个功能强大的变体类,它提供了一种通用的方式来存储Qt对象及其他类的值,能够以类似于指针的方式存储任意类型的值。 一、 主要特性 通用性:QVariant可以存储几乎所有数据类型,包括基本数据类型(如…...
再获殊荣!通付盾当选信息技术应用创新工作委员会技术活动单位称号
近日,通付盾凭借其在信息技术应用创新领域的卓越贡献和突出表现,荣获“信息技术应用创新工作委员会技术活动单位”称号。这一荣誉不仅是对通付盾在技术创新和信息安全领域努力的肯定,更是对其在推动国家信息技术应用创新发展中发挥重要作用的…...
PostgreSQL模板数据库template0和template1的异同点
PostgreSQL模板数据库 PostgreSQL有两个模板数据库:template0和template1,template0是不可修改的,而template1是可以修改的。 那模板数据库有什么作用呢?顾名思义,当做模板。 其实我们创建数据库 CREATE DATABASE 其…...
RSA2 - Writeup by AI
RSA2 - Writeup by AI 题目信息项目内容题目来源Bugku CTF题目类型Crypto (密码学)考点RSA 小指数攻击、Rabin 加密题目描述 给定 RSA 加密参数: 加密指数 e 2模数 N(3072 位)密文 c 要求解密得到 flag。 考点分析 核心知识点 RSA 小指数攻击…...
软件测试高频面试题 2026 最新整理(功能 + 自动化)
目录 一、功能测试高频题(必背) 1. 什么是软件测试?测试的目的是什么? 2. 黑盒测试 vs 白盒测试,区别与适用场景? 3. 测试用例设计方法有哪些?各适合什么场景? 4. 一个完整的测试用例包含哪些要素? 5. 什么是 Bug?Bug 的生命周期是什么? 6. 功能测试的核心流…...
Alibaba DASD-4B Thinking 对话工具在网络安全领域的应用:智能威胁分析与响应
Alibaba DASD-4B Thinking 对话工具在网络安全领域的应用:智能威胁分析与响应 每天,安全运维团队的工程师们都要面对海量的安全告警。防火墙日志、入侵检测系统的报警、终端防护软件的提示……这些信息像潮水一样涌来。传统的处理方式,往往依…...
Cursor 2.2的Visual Editor实战:如何像改Figma一样,5分钟重构一个Vue/React页面布局
Cursor 2.2的Visual Editor实战:如何像改Figma一样,5分钟重构一个Vue/React页面布局 重构老旧前端页面就像给老房子翻新——既要保留主体结构,又要让外观焕然一新。传统方式下,我们不得不在代码编辑器与浏览器之间反复切换&#x…...
文脉定序详细步骤:自定义prompt模板提升BGE-m3在垂直领域表现
文脉定序详细步骤:自定义prompt模板提升BGE-m3在垂直领域表现 1. 理解文脉定序与BGE-m3的核心价值 文脉定序是一款基于BGE-m3模型的智能语义重排序系统,专门解决传统搜索引擎"搜得到但排不准"的痛点。它通过全交叉注意机制,对问题…...
大模型本地推理显卡怎么选?实测Tesla P40、Titan RTX和RTX A3000的性价比之战
大模型本地推理显卡选购实战指南:Tesla P40、Titan RTX与RTX A3000深度横评 当你在深夜调试一个70亿参数的LLM模型时,突然弹出的"CUDA out of memory"错误提示可能是每个AI开发者最不愿看到的画面。选择一张合适的推理显卡,往往意…...
Verilog仿真踩坑记:为什么你的测试用例‘通过’了,但电路其实是错的?(附X态检测代码)
Verilog仿真中的X态陷阱:如何避免“虚假通过”的致命错误 数字电路仿真中,最危险的场景莫过于测试结果显示“Passed”,但实际芯片却存在严重功能缺陷。这种“虚假通过”现象往往源于Verilog中X态(未知状态)的隐蔽特性…...
4个硬核特性解决开发者存储管理难题
4个硬核特性解决开发者存储管理难题 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 一、存储困境诊断:开发者面临的四大存储挑战 识别…...
音频处理避坑指南:二进制编码转换中的常见问题与解决方案
音频处理避坑指南:二进制编码转换中的常见问题与解决方案 音频处理在现代多媒体应用中扮演着重要角色,从语音识别到音乐制作,从流媒体传输到嵌入式设备音频播放,二进制编码转换都是核心技术环节。对于有一定经验的开发者而言&…...
别等电脑挂了后悔,教你现在就查看Bitlocker密钥
网管小贾 / sysadm.cc陈主任晃了晃脑袋,皱着眉冲着刘晓白说道:“简历我看过了,就算请我吃饭,恐怕也很难办啊!” 刘晓白则一呲牙:“我说老舅,要进你们公司,还不是您一句话的事儿嘛&am…...
