参考:http://www.mouseos.com/windows/kernel/KiFastCallEntry.html

http://www.mouseos.com/windows/kernel/%E4%B8%80%E4%BA%9B%E9%80%86%E5%90%91%E5%87%BA%E6%9D%A5%E7%9A%84%E5%87%BD%E6%95%B0%E5%AE%9E%E7%8E%B0.html

KiFastCallEntry

  1. nt!KiFastCallEntry:
  2. 8053dad0 b923000000 mov ecx,23h
  3. 8053dad5 6a30 push 30h
  4. 8053dad7 0fa1 pop fs
  5. 8053dad9 8ed9 mov ds,cx
  6. 8053dadb 8ec1 mov es,cx
  7. 8053dadd 8b0d40f0dfff mov ecx,dword ptr ds:[0FFDFF040h]
  8. 8053dae3 8b6104 mov esp,dword ptr [ecx+4]
  9. 8053dae6 6a23 push 23h
  10. 8053dae8 52 push edx
  11. 8053dae9 9c pushfd
  12. 8053daea 6a02 push 2
  13. 8053daec 83c208 add edx,8
  14. 8053daef 9d popfd
  15. 8053daf0 804c240102 or byte ptr [esp+1],2
  16. 8053daf5 6a1b push 1Bh
  17. 8053daf7 ff350403dfff push dword ptr ds:[0FFDF0304h]
  18. 8053dafd 6a00 push 0
  19. 8053daff 55 push ebp
  20. 8053db00 53 push ebx
  21. 8053db01 56 push esi
  22. 8053db02 57 push edi
  23. 8053db03 8b1d1cf0dfff mov ebx,dword ptr ds:[0FFDFF01Ch]
  24. 8053db09 6a3b push 3Bh
  25. 8053db0b 8bb324010000 mov esi,dword ptr [ebx+124h]
  26. 8053db11 ff33 push dword ptr [ebx]
  27. 8053db13 c703ffffffff mov dword ptr [ebx],0FFFFFFFFh
  28. 8053db19 8b6e18 mov ebp,dword ptr [esi+18h]
  29. 8053db1c 6a01 push 1
  30. 8053db1e 83ec48 sub esp,48h
  31. 8053db21 81ed9c020000 sub ebp,29Ch
  32. 8053db27 c6864001000001 mov byte ptr [esi+140h],1
  33. 8053db2e 3bec cmp ebp,esp
  34. 8053db30 759a jne nt!KiFastCallEntry2+0x47 (8053dacc)
  35. 8053db32 83652c00 and dword ptr [ebp+2Ch],0
  36. 8053db36 f6462cff test byte ptr [esi+2Ch],0FFh
  37. 8053db3a 89ae34010000 mov dword ptr [esi+134h],ebp
  38. 8053db40 0f854afeffff jne nt!Dr_FastCallDrSave (8053d990)
  39. 8053db46 8b5d60 mov ebx,dword ptr [ebp+60h]
  40. 8053db49 8b7d68 mov edi,dword ptr [ebp+68h]
  41. 8053db4c 89550c mov dword ptr [ebp+0Ch],edx
  42. 8053db4f c74508000ddbba mov dword ptr [ebp+8],0BADB0D00h
  43. 8053db56 895d00 mov dword ptr [ebp],ebx
  44. 8053db59 897d04 mov dword ptr [ebp+4],edi
  45. 8053db5c fb sti
  46. 8053db5d 8bf8 mov edi,eax
  47. 8053db5f c1ef08 shr edi,8
  48. 8053db62 83e730 and edi,30h
  49. 8053db65 8bcf mov ecx,edi
  50. 8053db67 03bee0000000 add edi,dword ptr [esi+0E0h]
  51. 8053db6d 8bd8 mov ebx,eax
  52. 8053db6f 25ff0f0000 and eax,0FFFh
  53. 8053db74 3b4708 cmp eax,dword ptr [edi+8]
  54. 8053db77 0f8345fdffff jae nt!KiBBTUnexpectedRange (8053d8c2)
  55. 8053db7d 83f910 cmp ecx,10h
  56. 8053db80 751a jne nt!KiFastCallEntry+0xcc (8053db9c)
  57. 8053db82 8b0d18f0dfff mov ecx,dword ptr ds:[0FFDFF018h]
  58. 8053db88 33db xor ebx,ebx
  59. 8053db8a 0b99700f0000 or ebx,dword ptr [ecx+0F70h]
  60. 8053db90 740a je nt!KiFastCallEntry+0xcc (8053db9c)
  61. 8053db92 52 push edx
  62. 8053db93 50 push eax
  63. 8053db94 ff15c4355580 call dword ptr [nt!KeGdiFlushUserBatch (805535c4)]
  64. 8053db9a 58 pop eax
  65. 8053db9b 5a pop edx
  66. 8053db9c ff0538f6dfff inc dword ptr ds:[0FFDFF638h]
  67. 8053dba2 8bf2 mov esi,edx
  68. 8053dba4 8b5f0c mov ebx,dword ptr [edi+0Ch]
  69. 8053dba7 33c9 xor ecx,ecx
  70. 8053dba9 8a0c18 mov cl,byte ptr [eax+ebx]
  71. 8053dbac 8b3f mov edi,dword ptr [edi]
  72. 8053dbae 8b1c87 mov ebx,dword ptr [edi+eax*4]
  73. 8053dbb1 2be1 sub esp,ecx
  74. 8053dbb3 c1e902 shr ecx,2
  75. 8053dbb6 8bfc mov edi,esp
  76. 8053dbb8 3b35b48f5580 cmp esi,dword ptr [nt!MmUserProbeAddress (80558fb4)]
  77. 8053dbbe 0f83a8010000 jae nt!KiSystemCallExit2+0x9f (8053dd6c)
  78. 8053dbc4 f3a5 rep movs dword ptr es:[edi],dword ptr [esi]
  79. 8053dbc6 ffd3 call ebx
  80. 8053dbc8 8be5 mov esp,ebp
  81. 8053dbca 8b0d24f1dfff mov ecx,dword ptr ds:[0FFDFF124h]
  82. 8053dbd0 8b553c mov edx,dword ptr [ebp+3Ch]
  83. 8053dbd3 899134010000 mov dword ptr [ecx+134h],edx
  1. daniel@daniel-mint ~/bap/bap-0.7/libasmir/apps $ hexdump -C kifastcallentry.dump | cut -b 10-60 | sed -re 's/[0-9a-f]{2}/\\x&/g' | sed -re 's/ //g' | sed -e 's/^/"/g' | sed -e 's/$/"/g'
  2. "\xb9\x23\x00\x00\x00\x6a\x30\x0f\xa1\x8e\xd9\x8e\xc1\x8b\x0d\x40"
  3. "\xf0\xdf\xff\x8b\x61\x04\x6a\x23\x52\x9c\x6a\x02\x83\xc2\x08\x9d"
  4. "\x80\x4c\x24\x01\x02\x6a\x1b\xff\x35\x04\x03\xdf\xff\x6a\x00\x55"
  5. "\x53\x56\x57\x8b\x1d\x1c\xf0\xdf\xff\x6a\x3b\x8b\xb3\x24\x01\x00"
  6. "\x00\xff\x33\xc7\x03\xff\xff\xff\xff\x8b\x6e\x18\x6a\x01\x83\xec"
  7. "\x48\x81\xed\x9c\x02\x00\x00\xc6\x86\x40\x01\x00\x00\x01\x3b\xec"
  8. "\x75\x9a\x83\x65\x2c\x00\xf6\x46\x2c\xff\x89\xae\x34\x01\x00\x00"
  9. "\x0f\x85\x4a\xfe\xff\xff\x8b\x5d\x60\x8b\x7d\x68\x89\x55\x0c\xc7"
  10. "\x45\x08\x00\x0d\xdb\xba\x89\x5d\x00\x89\x7d\x04\xfb\x8b\xf8\xc1"
  11. "\xef\x08\x83\xe7\x30\x8b\xcf\x03\xbe\xe0\x00\x00\x00\x8b\xd8\x25"
  12. "\xff\x0f\x00\x00\x3b\x47\x08\x0f\x83\x45\xfd\xff\xff\x83\xf9\x10"
  13. "\x75\x1a\x8b\x0d\x18\xf0\xdf\xff\x33\xdb\x0b\x99\x70\x0f\x00\x00"
  14. "\x74\x0a\x52\x50\xff\x15\xc4\x35\x55\x80\x58\x5a\xff\x05\x38\xf6"
  15. "\xdf\xff\x8b\xf2\x8b\x5f\x0c\x33\xc9\x8a\x0c\x18\x8b\x3f\x8b\x1c"
  16. "\x87\x2b\xe1\xc1\xe9\x02\x8b\xfc\x3b\x35\xb4\x8f\x55\x80\x0f\x83"
  17. "\xa8\x01\x00\x00\xf3\xa5\xff\xd3\x8b\xe5\x8b\x0d\x24\xf1\xdf\xff"
  18. "\x8b\x55\x3c\x89\x91\x34\x01\x00\x00"
  19. ""

  

call ebx会最终跳转到真正的System Service服务例程处执行, 如果我们hook了任一SSDT项目,那么它的返回地址一定是在8053dbc8处。

  

sysenter内核入口点代码分析的更多相关文章

  1. linux内核中链表代码分析---list.h头文件分析(一)【转】

    转自:http://blog.chinaunix.net/uid-30254565-id-5637596.html linux内核中链表代码分析---list.h头文件分析(一) 16年2月27日17 ...

  2. linux内核中链表代码分析---list.h头文件分析(二)【转】

    转自:http://blog.chinaunix.net/uid-30254565-id-5637598.html linux内核中链表代码分析---list.h头文件分析(二) 16年2月28日16 ...

  3. STM32F103 ucLinux开发之二(内核启动汇编代码分析)

    start_kernel之前的汇编代码分析 Boot中执行下面两句话之后,进入uclinux内核. theKernel = (void (*)(int, int, unsigned int))((ui ...

  4. 【内核】linux内核启动流程详细分析

    Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...

  5. 【内核】linux内核启动流程详细分析【转】

    转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件 ...

  6. Linux内核--网络栈实现分析(一)--网络栈初始化

    本文分析基于内核Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7488828 更多请看专栏, ...

  7. Linux内核--网络栈实现分析(一)--网络栈初始化--转

    转载地址 http://blog.csdn.net/yming0221/article/details/7488828 作者:闫明 本文分析基于内核Linux Kernel 1.2.13 以后的系列博 ...

  8. C# 一、语法结构、注释、命名空间、Main入口点、变量与常量、运算符、流程控制(循环)

    一.代码结构 1)一个 C# 程序主要包括以下部分: 命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(St ...

  9. Linux内核中的GPIO系统之(3):pin controller driver代码分析

    一.前言 对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datash ...

随机推荐

  1. 前端webpack & vue

    地址 : https://blog.csdn.net/jiang7701037

  2. 实现自己的DiscoveryClient

    需要做的: DiscoveryClient能提供那些服务的服务名列表 返回指定服务对于的ServiceInstance列表 返回DiscoveryClient的顺序 返回HealthIndicator ...

  3. LayaBox 常用技巧

    1.修改IDE的菜单 找到安装路径的LayaAirIDE\resources\app\out\vs\layaEditor\renders\laya.editorUI.xml 注意事项: 1.mask的 ...

  4. CSS-06 外部JS,CSS文件的寻址问题

    如果js.css外部文件有使用到相对路径,其相对路径的基准是不一样的 当一个index.html中引入外部的JS和CSS文件时: 在index.css文件中,相对路径的写法是以css文件相对于img图 ...

  5. elasticsearch 深入 —— Search Type检索类型

    在此我们再给出那个查询的代码: $ curl -XGET localhost:9200/startswith/test/_search?pretty -d '{ "query": ...

  6. Beta阶段成果展示——第八组

    Beta阶段成果展示 游戏公网IP:http://119.29.32.204/krad.html(欢迎大家测试!) Beta阶段体现在成果上的工作主要为界面美化,玩家引导,按键封闭等等. 本文将以截图 ...

  7. JWT 实现基于API的用户认证

    基于 JWT-Auth 实现 API 验证 如果想要了解其生成Token的算法原理,请自行查阅相关资料 需要提及的几点: 使用session存在的问题: session和cookie是为了解决http ...

  8. 让docker容器使用主机系统时间(挂入/etc/localtime)

    -v挂入这个文件就可以了: -v /etc/localtime:/etc/localtime:ro

  9. python-zmail发送邮件

    import zmail #发送测试报告到邮件 with open(r'F:\asus\auto_file\unittest_html\2019-06-30 10-31-03report.html', ...

  10. 数据库与缓存:2.Redis数据库的基本知识

    1.属于什么类型的数据库 not only sql  非关系型数据库,与传统的关系型数据库不同,存储形式都是kv形式. 2.特点 几乎不支持事务,key-value形式存储,支持队列和缓存(可以设置数 ...