- 博客(4)
- 收藏
- 关注
原创 如何尽可能的申请高位内存
之前忘了是在那个位置看到这个问题的了 当时看需求应该是要伪装成loadlibrary加载起来的dll当时不知道如何申请高位内存 现在看了windows的内存分配所以尝试了下 发现申请的内存地址确实可以控制在高位 特此记录typedef NTSTATUS (NTAPI *pfnNtAllocateVirtualMemory)(HANDLE,PVOID*,ULONG_PTR,PSIZE_T,ULONG,ULONG);int main(){ HMODULE ntDll = LoadLibra
2021-08-12 17:02:48 706 1
原创 对页表自映射的理解
在当前进程环境下页表被安排到一段连续的虚存空间内 此时页表1对应0~4kb 页表2对应4kb~8kb ..... 是一个顺序存放的4mb空间(虚存的页表占用大小) 由于需要页表自映射 所以我们可以知道在1024个页表当中有那么一张页表 刚好存放的数据和PDT数据相同(指向其他的1023个页表 也就是页目录表) 那么如何计算该页表(页目录表)在4mb空间内的那个地方呢? 前文得知由于页表的存放和内存有一定关系(页表1 ==>0~4096 页表2 ==>4096~8192 ....)
2021-08-09 16:50:55 699
原创 更快理解KMP算法
一般的字符串比较算法是暴力匹配当被比较字符串和比较字符串失配时 比较字符串的当前比较字符转到0被比较字符串也转到上个开始匹配的位置+1这样比较效率通常是极低的KMP算法便是更快速高效的字符串比较算法KMP算法关键是一个模式串的最长公共前后缀 明白了这个含义KMP算法算是理解了大半**最长公共前后缀**倘若有这样一个字符串"ABCBCA"该字符串的前缀集合:A,AB,ABC,ABCB,ABCBC高字符串的后缀集合:A,CA,BCA,CBCA,BCBCA看的出该字符串的最长前后缀为
2020-10-28 17:36:50 646
原创 FPS三角函数Z轴转换
世界坐标转屏幕x坐标还好 网上有大把教程 但是对y坐标要么是讲的笼统 要么是没讲苦苦琢磨 算是搞懂了Y坐标的转换:上图中∠a为玩家仰视角 (该图中假设该角为0°)OB为视线 ∠BOA(coe) 为玩家仰角D点为敌人Z为敌人与玩家的Z轴差距OD为敌人与玩家的二维距离(可由玩家和敌人的三维坐标xy相减 计算求得)上图假设∠a为0° 那么ce的距离通过tan便可求得ce:oe=tan(∠a)oe可以通过fov角 和屏幕宽度计算求得有tan(∠a) = ce\oe = ce = tan(.
2020-08-28 18:05:34 602
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人