论坛首页 安全编程开发区 阅读主题

[原创]实现简易ARK工具(5) x64信息快查

309 浏览 2 回复
#1 楼主 2026-06-01 21:08:59
前言
开了这个坑,但前文都是x86的,感觉差点意思,发笔记凑活一下- -
写玩具的时候收集的一些api、结构体、遍历信息的方法,全靠看雪前辈们的文章啊-。-,帮助新同学省去检索信息的时间。能力有限,欢迎大家补充指正。
下文内容在win7 7601和win10 19h1经验证可行。

解析pdb
R3:905K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6w2N6$3q4F1M7%4V1&6z5q4)9J5c8V1g2S2M7%4W2b7k6r3t1`.
R0:d0bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6a6P5s2W2Y4k6h3^5I4j5e0q4Q4x3V1k6G2P5r3N6W2L8W2m8V1j5R3`.`. 他用的ksocket库只能发http请求,所以我只用他解析pdb,让R3调UrlDownloadToFile下载。
也可以让ida下pdb 直接使用dia2dump解析即可
大家有什么在R0下载符号的方法吗
GDT
用不了__asm了,用函数拿gdtr,联合编译asm也行
#include <immintrin.h>
extern "C" void _sgdt(void*);
​ _sgdt(&gdtr);
我在R3拿居然是错的
在x64下,TSS(任务状态段)和LDT(局部描述符表)等系统段描述符扩展为16字节,占用连续两个GDT项。
前8字节与32位一样,后8字节用于补充TSS/LDT的高32位base地址和保留字段。
所以解析数据的时候遇到s=0且type为TSS/LDT类型(type=2,9,11),和下一项8字节的数据合并一起解析。
平坦模式导致数据段和代码段的base/limit字段失效,只需关注系统段的base/limit。

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-287914.htm
#2 2026-06-01 21:08:59
棒棒滴,继续加油,期待对ObjectHandle枚举的实现。
#3 2026-06-01 21:08:59
谢谢分享

请登录后参与讨论

立即登录 注册账号