找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5372|回复: 6

半夜三更,紧急呼叫,TA 和 Xiaoly99

[复制链接]

90

主题

473

回帖

2

精华

钻石会员

积分
3261
发表于 2010-8-28 23:45:56 | 显示全部楼层 |阅读模式
在xiaoly99的帮助下,终于找到了原始地址
可是,有一个很奇怪的问题,简直是奇了怪了。
如果单独做,ssdt表中函数的当前地址和原始地址,都能得到
但是和在一起,就不行了,为什么呢?
希望TA  和  Xiaoly99来救助.

90

主题

473

回帖

2

精华

钻石会员

积分
3261
 楼主| 发表于 2010-8-28 23:47:20 | 显示全部楼层
本帖最后由 ok100fen 于 2010-8-28 23:49 编辑

当前地址的代码:

  1. #include <ntddk.h>
  2. VOID DDK_Unload (IN PDRIVER_OBJECT pDriverObject);
  3. VOID DDK_Unload (IN PDRIVER_OBJECT pDriverObject)
  4. {

  5. }

  6. NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject,PUNICODE_STRING B)
  7. {
  8. extern long KeServiceDescriptorTable;
  9. ULONG SSDT_NtOpenProcess_Addr;
  10. KdPrint(("驱动加载成功"));
  11. _asm
  12. {
  13. push ebx
  14. push eax
  15. mov ebx,KeServiceDescriptorTable
  16. mov ebx,[ebx]
  17. mov eax,0x7a
  18. shl eax,2
  19. add ebx,eax
  20. mov ebx,[ebx]
  21. mov SSDT_NtOpenProcess_Addr,ebx
  22. pop eax
  23. pop ebx
  24. }


  25. KdPrint(("SSDT的当前地址=%x",SSDT_NtOpenProcess_Addr));
  26. pDriverObject->DriverUnload=DDK_Unload;
  27. return (1);
  28. }

复制代码

90

主题

473

回帖

2

精华

钻石会员

积分
3261
 楼主| 发表于 2010-8-28 23:48:55 | 显示全部楼层
原始地址代码:


  1. #include <ntddk.h>
  2. #include "ntimage.h"
  3. #include "KernelVoid.h"
  4. VOID Unload(IN PDRIVER_OBJECT DriverObject)
  5. {
  6. }
  7. NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
  8. {
  9. ULONG XXXX,yyyy,SSDT_NtOpenProcess_Cur_Addr;
  10. XXXX=KvGetSSDTVoid("NtTerminateProcess");
  11. DbgPrint("NtTerminateProcess的原始地址是0x%x.",KvGetSSDTVoid("NtTerminateProcess"));

  12. DriverObject->DriverUnload = Unload;

  13. return STATUS_SUCCESS;
  14. }
复制代码

90

主题

473

回帖

2

精华

钻石会员

积分
3261
 楼主| 发表于 2010-8-28 23:55:13 | 显示全部楼层
合在一起,就出错,为什么?
希望高人快快出现~~~~~~
天灵灵,地灵灵~~~~~

  1. #include <ntddk.h>
  2. #include "ntimage.h"
  3. #include "KernelVoid.h"
  4. VOID Unload(IN PDRIVER_OBJECT DriverObject)
  5. {
  6. }
  7. NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
  8. { extern long KeServiceDescriptorTable;
  9. ULONG SSDT_NtOpenProcess_Addr;
  10. ULONG XXXX,yyyy,SSDT_NtOpenProcess_Cur_Addr;
  11. XXXX=KvGetSSDTVoid("NtTerminateProcess");
  12. DbgPrint("NtTerminateProcess的原始地址是0x%x.",KvGetSSDTVoid("NtTerminateProcess"));






  13. _asm
  14. {
  15. push ebx
  16. push eax
  17. mov ebx,KeServiceDescriptorTable
  18. mov ebx,[ebx]
  19. mov eax,0x7a
  20. shl eax,2
  21. add ebx,eax
  22. mov ebx,[ebx]
  23. mov SSDT_NtOpenProcess_Addr,ebx
  24. pop eax
  25. pop ebx
  26. }


  27. KdPrint(("SSDT的当前地址=%x",SSDT_NtOpenProcess_Addr));

  28. DriverObject->DriverUnload = Unload;

  29. return STATUS_SUCCESS;
  30. }
复制代码

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-8-29 00:23:47 | 显示全部楼层
你干啥不用我给你的代码???

90

主题

473

回帖

2

精华

钻石会员

积分
3261
 楼主| 发表于 2010-8-29 00:43:54 | 显示全部楼层
你说的这个?
看了,没看懂什么意思
你看看我的这个错在哪里?

驱动版本的在这里:
Tesla.Angela 发表于 2010-8-28 17:06

90

主题

473

回帖

2

精华

钻石会员

积分
3261
 楼主| 发表于 2010-8-29 17:20:26 | 显示全部楼层
等了一天了
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表