现在 做网站 最流行青浦徐泾网站建设
2026/1/20 20:25:21 网站建设 项目流程
现在 做网站 最流行,青浦徐泾网站建设,苏州做网站需要多少钱,咖啡厅网站建设总结 通过mprotect设置内存为 PROT_NONE 并使用sigaction注册信号处理接管访问被保护内存的SIGSEGV 随后在sigsegv_handler进行了一系列解析指令、模拟执行指令、回写解密数据的操作#xff1a; 1、解析异常地址并判断是否属于被保护范围#xff0c;解析ARM引发SIGSEGV的指…总结通过mprotect设置内存为 PROT_NONE 并使用sigaction注册信号处理接管访问被保护内存的SIGSEGV随后在sigsegv_handler进行了一系列解析指令、模拟执行指令、回写解密数据的操作1、解析异常地址并判断是否属于被保护范围解析ARM引发SIGSEGV的指令获取操作数、寄存器信息2、读取context中加密的寄存器值解密数据并将其写回异常context3、构造shellcode实现一个模拟单步传入解密后的context使用context结构中的寄存器信息单步执行4、shellcode会将写入的单步指令的执行结果回写到context中此时便可以跳过异常指令直接恢复执行至此数据解密完成分析一、追踪目标代码进入游戏对局后发现全局World地址无法读取到正确的数据查看maps发现该地址vma属性已经被设置成---p既然无法访问那么进程自身是如何访问的呢遂在内核接管了下 mprotect 和 sigaction发现游戏设置了SIGSEGV (11) 的 signal_handler 用来处理内存访问异常二、SIGSEGV处理概览ARM指令编码规则https://developer.arm.com/documentation/ddi0602/2024-12/Index-by-Encoding三、异常指令分类处理1、处理 Loads Stores Instructions解析指令拿到指令用到的的寄存器、立即数等信息为下一步的模拟执行准备context信息读取异常context中的用到的加密值解密值并写回异常context随后调用sub_75A299FDA0加载模拟执行用到的shellcode填充需要模拟单步的指令sub_75A299FDA0会mmap申请一块内存写入原始的shellcode包详见下文刷新模拟单步的shellcode所在的指令和数据缓存使用修正后的异常context执行shellcode并从shellcode执行后的context中获取指令执行结果将结果写回到SIGSEGV上下文寄存器中修改PC跳过指令继续执行2、处理 SYS Instructions与直接读写内存的指令类似解析指令拿到指令隐性使用到的寄存器值解密值并将其写回context随后直接模拟执行来修正异常指令执行后的context并跳过该指令3、模拟执行shellcode构造使用mmap申请一段rwx内存并写入shellcodeshellcode实现了加载context到物理寄存器执行需要单步的指令将物理寄存器写回context结构代码预置了四个类似的shellcode唯一区别是解析shellcode参数时用到的寄存器分别为X0、X1、X2、X3其目的是为了防止解析参数的寄存器影响到模拟执行结果构造完成后将shellcode地址存到线程相关的结构上类似Windows的TEB只不过这个是te*safe自己构造的其中一个shellcode具体内容如下其他的shellcode除存储context的寄存器不同外逻辑一致

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询