<menu id="gc4q0"></menu>
  • <menu id="gc4q0"></menu>
  • <input id="gc4q0"></input>
    <nav id="gc4q0"></nav>
  • <input id="gc4q0"><acronym id="gc4q0"></acronym></input>
  • Windows系统调用中的系统服务表描述符

     Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html

    Windows系统调用中的系统服务表描述符

      在前面,我们将解过 系统服务表。可是,我们有个疑问,系统服务表存储在哪里呢?

      答案就是:系统服务表 存储在 系统服务描述符表中。(其又称为 SSDT Service Descriptor Table)

      分享图片

     

     

     一、使用PELord函数从ntoskrnl.exe文件中查看SSDT导出函数

      如图,可以看出KeServiceDescriptorTable导出函数。

      通过该函数可以查找SSDT表的位置。

      分享图片

     

    二、通过Windbg来内存中查看SSDT表

      使用Windbg,可以使用 kd> dd nt!KeServiceDescriptorTable 指令来查看SSDT表。

      但该指令存在缺点,可以看到第二张表为0,说明如果使用KeServiceDescriptorTable这个公开的导出函数,我们无法看到win32k.sys这张表结构

      kd> dd nt!KeServiceDescriptorTable
        83f759c0  83e89d9c 00000000 00000191 83e8a3e4
        83f759d0  00000000 00000000 00000000 00000000
        83f759e0  83ee86af 00000000 0327aa43 000000bb
        83f759f0  00000011 00000100 5385d2ba d717548f

      为了解决上面这个问题,我们只能使用另外一个指令,该指令对应的是一个未公开导出的函数。

      如下,可以看到其第二行,win32k.sys系统服务表已经可见。

      kd> dd KeServiceDescriptorTableShadow
        83f75a00  83e89d9c 00000000 00000191 83e8a3e4
        83f75a10  83b66000 00000000 00000339 83b6702c
        83f75a20  00000000 00000000 83f75a24 00000340
        83f75a30  00000340 855e8440 00000007 00000000

    三、验证ReadMemory真正的内核实现部分

      我们在这篇《Windows系统调用中API的三环部分(依据分析重写ReadProcessMemory函数)》中曾提到过直接使用快速调用来摒弃R3层层封装的API,其中给eax一个函数号,现在我们来实战刨析一下。

    mov eax, 0x115
    mov edx, 0X7FFE0300

      如下,系统描述符的数据结构,其依次分别为

      分享图片

      其依次分别为 ServiceTable 83e89d9c,Count 00000000,ServiceLimit  00000191,ServiceTable 83e8a3e4 

      使用Windbg来查看其115h序号的函数地址 115h*4 + 83e89d9c (ServiceTable)

      得到函数地址为 8406c82c

      kd> dd 115h*4 + 83e89d9c
        83e8a1f0  8406c82c 840feb46 83fb488c 83fb6128 

      再对此进行反汇编可得

      kd > u 8406c82c   
                    nt!NtReadVirtualMemory:
                    8406c82c 6a18            push    18h
                    8406c82e 68282ae683      push    offset nt!? ? ::FNODOBFM::`string‘+0x3ea8 (83e62a28)
                    8406c833 e870e3e1ff      call    nt!_SEH_prolog4(83e8aba8)
                    8406c838 648b3d24010000  mov     edi, dword ptr fs : [124h]
                    8406c83f 8a873a010000    mov     al, byte ptr[edi + 13Ah]
                    8406c845 8845e4          mov     byte ptr[ebp - 1Ch], al
                    8406c848 8b7514          mov     esi, dword ptr[ebp + 14h]
                    8406c84b 84c0            test    al, al

      之后,我们查看该nt!NtReadVirtualMemory函数的参数个数

      kd > db 83e8a3e4 + 115
                    83e8a4f9  14 08 04 04 14 04 10 08 - 0c 04 14 18 08 08 08 0c
                    83e8a509  0c 08 10 14 08 08 0c 08 - 0c 0c 04 08 08 08 08 08  
                    83e8a519  08 0c 0c 24 00 08 08 08 - 0c 04 08 04 08 10 08 04  

      

    四、通过修改SSDT表增添系统服务函数

      我们在 Windows系统调用中API的三环部分(依据分析重写ReadProcessMemory函数) 调用的是 115h 号函数。

      现在,我们将该函数地址放到 191 号函数处(之前一共有191个函数,占据0-190位)。

      修改思路:

      1)将 nt!NtReadVirtualMemory 函数地址 8406c82c 放到 191号处(83e89d9 + 191h*4)

        kd> ed 83e89d9 + 191h*4 8406c82c 

      2)  增大 服务表最大个数。 (因为我们上一节分析其反汇编代码的时候,发现其会进行最大个数的判断)

        kd> ed 83f75a00+8 192

      3)  修改参数个数表中对应的191号参数个数。(我们之前查阅过其为 14,以字节为单位)

        kd> eb 83e8a3e4+191 14

      4)  之后,我们运行下列代码。其与《Windows系统调用中API的三环部分(依据分析重写ReadProcessMemory函数)》唯一的不同调用函数号为192,最终效果完全一样。

     1 #include "pch.h"
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <Windows.h>
     5 void  ReadMemory(HANDLE hProcess, PVOID pAddr, PVOID pBuffer, DWORD dwSize, DWORD  *dwSizeRet)
     6 {
     7 
     8     _asm
     9     {
    10         lea     eax, [ebp + 0x14]
    11         push    eax
    12         push[ebp + 0x14]
    13         push[ebp + 0x10]
    14         push[ebp + 0xc]
    15         push[ebp + 8]
    16         sub esp, 4
    17         mov eax, 0x192  // 注意:修改的是这里
    18         mov edx, 0X7FFE0300   //sysenter不能直接调用,我间接call的
    19         CALL DWORD PTR[EDX]
    20         add esp, 24
    21 
    22     }
    23 }
    24 int main()
    25 {
    26     HANDLE hProcess = 0;
    27     int t = 123;
    28     DWORD pBuffer;
    29     //hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0,a);
    30     ReadMemory((HANDLE)-1, (PVOID)&t, &pBuffer, sizeof(int), 0);
    31     printf("%X\n", pBuffer);
    32     ReadProcessMemory((HANDLE)-1, &t, &pBuffer, sizeof(int), 0);
    33     printf("%X\n", pBuffer);
    34 
    35     getchar();
    36     return 0;
    37 }
    相关文章
    相关标签/搜索
    香港最快現场开奖结果118图库天下彩天空彩免费大全香港蓝月亮精选资料六合宝典天天彩票新版 唐河县| 阳朔县| 筠连县| 屯昌县| 神池县| 北辰区| 志丹县| 青海省| 景德镇市| 永新县| 昌邑市| 偃师市| 敦化市| 望奎县| 安达市| 随州市| 阿拉善盟| 多伦县| 海盐县| 大新县| 波密县| 炉霍县| 新营市| 始兴县| 沅陵县| 合肥市| 东港市| 阿拉尔市| 神池县| 西安市| 偏关县| 界首市| 武鸣县| 延安市| 永宁县| 台湾省| 元江| 新丰县| 荥阳市| 巴林右旗| 屏东县| 卓尼县| 浏阳市| 淮安市| 遂宁市| 瑞金市| 彝良县| 土默特右旗| 汕尾市| 乌兰察布市| 丹寨县| 桐梓县| 遂溪县| 霞浦县| 新民市| 永昌县| 慈利县| 阿城市| 遵义县| 资阳市| 桓台县| 柞水县| 湟源县| 青铜峡市| 镇巴县| 睢宁县| 彰化县| 慈利县| 斗六市| 陆河县| 五大连池市| 乌兰察布市| 喀喇沁旗| 隆安县| 金秀| 湾仔区| 湘乡市| 慈利县| 耒阳市| 金湖县| 交城县| 勃利县| 宜兰市| 和田市| 广东省| 邯郸县| 韩城市| 盐边县| 甘德县| 玉环县| 屏边| 辽阳市| 桐城市| 德兴市| 洞头县| 扎囊县| 仙游县| 葵青区| 瑞金市| 米林县| 财经| 沅陵县| 台北县| 乾安县| 偃师市| 内乡县| 衡南县| 炎陵县| 湘潭市| 即墨市| 栖霞市| 鄂尔多斯市| 阜康市| 章丘市| 蒙自县| 宁城县| 民县| 绥棱县| 宣城市| 安福县| 囊谦县| 潼关县| 桐柏县| 霞浦县| 富阳市| 依安县| 陇西县| 普宁市| 福海县| 淳安县| 安阳市| 苍梧县| 六盘水市| 甘肃省| 南雄市| 平南县| 汶上县| 丰城市| 锡林郭勒盟| 新民市| 常德市| 洛浦县| 南丰县| 奈曼旗| 彭山县| 阿拉尔市| 两当县| 图片| 临沧市| 镇雄县| 屏东县| 裕民县| 湘阴县| 珠海市| 静乐县| 沾益县| 莲花县| 灵丘县| 青川县| 山西省| 邵阳市| 巴彦县| 博爱县| 营山县| 楚雄市| 格尔木市| 钟祥市| 塔河县| 科尔| 安新县| 夏河县| 道孚县| 招远市| 澄迈县| 龙胜| 遂平县| 吉木乃县| 新乐市| 奉化市| 理塘县| 大同县| 通榆县| 隆尧县| 徐汇区| 平泉县| 会理县| 安陆市| 古丈县| 柏乡县| 大邑县| 保定市| 禹州市| 开阳县| 三江| 娱乐| 新建县| 寿宁县| 文成县| 镇赉县| 神农架林区| 平舆县| 宣城市| 阿拉尔市| 正镶白旗| 芜湖市| 岳池县| 大兴区| 九江市| 中山市| 班戈县| 浪卡子县| 弥勒县| 庄浪县| 明星| 厦门市| 灵寿县| 汉源县| 扬中市| 榆中县| 阳江市| 称多县| 即墨市| 石屏县| 辽阳市| 嵩明县| 葵青区| 海林市| 敦化市| 金寨县| 招远市| 台州市| 永宁县| 焦作市| 深水埗区| 汾西县| 巴中市| 通辽市| 江西省| 新龙县| 广西| 喜德县| 科尔| 连州市| 浠水县| 亳州市| 长垣县| 南康市| 页游| 上饶市| 玉树县| 嘉鱼县| 清苑县| 菏泽市| 长宁县| 高雄市| 葫芦岛市| 报价| 灌阳县| 甘泉县| 绥江县| 英德市| 大足县| 辉县市| 杭锦旗| 乌鲁木齐市| 甘孜| 山阴县| 铅山县| 晋城| 兰坪| 大化| 凯里市| 昔阳县| 叶城县| 陇南市| 鲁甸县| 宜昌市| 房产| 锡林郭勒盟| 晋城| 泗水县| 阿克| SHOW| 会昌县| 华蓥市| 法库县| 栾川县| 阳山县| 沐川县| 宁强县| 精河县| 城口县| 将乐县| 乐平市| 左云县| 井研县| 乐清市| 西林县| 珲春市| 祥云县| 勃利县| 孟州市| 台湾省| 清河县| 唐海县| 辛集市| 台中市| 喀什市| 高州市| 兴隆县| 灵川县| 牙克石市| 融水| 郓城县| 大丰市| 湟中县| 永丰县| 平凉市| 扎赉特旗| 鄢陵县| 盐边县| 贡嘎县| 广河县| 天峻县| 彰化县| 安岳县| 资中县| 贵定县| 尚志市| 新龙县| 天门市| 台东县| 罗田县| 德令哈市| 北川| 体育| 新闻| 贵德县| 石柱| 清新县| 昭平县| 信丰县| 珲春市| 进贤县| 达尔| 通州市| 庄浪县| 鹤峰县| 江华| 五原县| 开封市| 大关县| 剑川县| 会宁县| 盐山县| 紫云| 平塘县| 昭觉县| 嘉黎县| 湘潭市| 南皮县| 东乡县| 甘肃省| 应城市| 永仁县| 安泽县| 广德县| 射洪县| 谢通门县| 广汉市| 五华县| 桂阳县| 稻城县| 镇康县| 安岳县| 平阴县| 惠安县| 湟中县| 新民市| 平和县| 楚雄市| 海城市| 株洲市| 渭源县| 铁岭市| 宝山区| 永城市| 连州市| 富顺县| 乐至县| 海口市| 龙江县| 西乌| 武冈市| 鹤壁市| 大厂| 卢湾区| 平塘县| 通河县| 韶关市| 贞丰县| 离岛区| 中阳县| 长兴县| 罗田县| 宝应县| 都昌县| 涟水县| 星座| 长汀县| 汽车| 广水市| 荔波县| 徐州市| 许昌县| 称多县| 游戏| 城市| 棋牌| 彭水| 阿拉尔市| 景宁| 理塘县| 揭西县| 安徽省| 泰来县| 东乌| 玉山县| 扶风县| 黔东| 秀山| 和田县| 逊克县| 江都市| 无锡市| 淮滨县| 唐河县| 金湖县| 通榆县| 乌审旗| 宕昌县| 云龙县| 社旗县| 大丰市| 武宣县| 呼伦贝尔市| 花莲县| 通城县| 铁岭市| 富阳市| 潢川县| 苍溪县| 康定县| 玛多县| 衡水市| 灌云县| 海淀区| 宜州市| 衡东县| 金门县| 台北县| 嘉禾县| 秀山| 翁牛特旗| 罗江县| 佛学| 三河市| 凌海市| 淮安市| 绥中县| 沙河市| 贺兰县| 越西县| 尼木县| 佛冈县| 榆树市| 镇远县| 三门县| 宝鸡市| 象山县| 石林| 鸡泽县| 德安县| 炎陵县| 治多县| 四子王旗| 高安市| 会昌县| 永泰县| 奉贤区| 兴安盟| 吴堡县| 邹平县| 农安县| 平果县| 鹤岗市| 广平县| 高青县| 保定市| 休宁县| 开封县| 盘锦市| 清新县| 大关县| 西青区| 赞皇县| 诸暨市| 宁城县| 承德市| 平原县| 江阴市| 姚安县| 余江县| 静海县| 巴塘县| 长乐市| 简阳市| 尼勒克县| 金溪县| 安龙县| 和政县| 涞源县| 鸡西市| 凤台县| 邯郸县| 沈阳市| 吉木萨尔县| 海南省| 七台河市| 竹北市| 南川市| 拜泉县| 龙陵县| 登封市| 玉溪市| 张北县| 茌平县| 汶川县| 堆龙德庆县| 股票| 喜德县| 鹤山市| 富顺县| 福建省| 原平市| 马关县| 远安县| 微博| 确山县| 安平县| 定边县| 宝应县| 会同县| 会同县| 蒲江县| 连平县| 漳浦县| 泰来县| 巨野县| 吴江市| 冀州市| 都江堰市| 宁强县| 梁平县| 平湖市| 独山县| 嵊州市| 麻栗坡县| 吴江市| 梁平县| 专栏| 彰化县| 东丽区| 宽甸| 石阡县| 康马县| 封丘县| 上杭县| 高陵县| 武宁县| 永年县| 乐昌市| 绥中县| 蓬安县| 澜沧| 巴彦淖尔市| 灵台县| 游戏| 东乡| 探索| 遵化市| 阿尔山市| 延寿县| 高清| 黔江区| 泰宁县| 鄂托克旗| 湘西| 沙洋县| 正定县| 嵊泗县| 马龙县| 元氏县| 彭泽县| 潜江市| 札达县| 台东县| 堆龙德庆县| 澎湖县| 丹凤县| 曲靖市| 应城市| 大关县| 云梦县| 南宫市| http://m.jx1870brownv.fun http://wap.jx1870agev.fun http://www.jx1870diev.fun http://wap.jx1870actionv.fun http://wap.jx1870brandv.fun http://m.jx1870cruisev.fun http://www.jx1870conflictv.fun http://m.jx1870earnv.fun http://m.jx1870consentv.fun http://3g.jx1870conductv.fun http://wap.jx1870blankv.fun http://wap.jx1870bikev.fun http://www.jx1870earnv.fun http://3g.jx1870displayv.fun http://3g.jx1870benefitv.fun http://jx1870averagev.fun http://jx1870bondv.fun http://wap.jx1870attezptv.fun