阅读:1961回复:13
[100分]讨论一下核心未被引出的函数,变量怎样比较可靠获得
大家讨论一下
对于服务描述表中的,可以映射ntdll.dll到核心,分析PE文件,找到调用指令处判断服务号,再在服务描述表中按号找 那么其它的例程,变量又如何 使用硬编码与调试符号的方法除外 暴力搜索的请给出比较稳妥地依据 还有其它新方法的,非常欢迎,针对一个例程或变量也可以 |
|
最新喜欢:aasa2
|
沙发#
发布于:2005-05-16 12:54
这个找KeServiceDescriptorTableShadow() DWORD findAddressofShadowTable(void) { int i; unsigned char *p; DWORD val; int result; p = (unsigned char *)KeAddSystemServiceTable; for (i = 0; i < PAGE_SIZE; i++, p++) { __try { val = *(unsigned int *)p; } __except (EXCEPTION_EXECUTE_HANDLER) { return 0; } if (MmIsAddressValid((PVOID)val)) { result = memcmp((PVOID)val, KeServiceDescriptorTable, 16); if (memcmp((PVOID)val, KeServiceDescriptorTable, 16) == 0) { if((PVOID)val != KeServiceDescriptorTable){ return val; } } } } return 0; } |
|
板凳#
发布于:2005-05-16 18:36
方便最稳当的方法还是要数硬编码口牙
针对不同的操作系统版本收集不同的偏移 然后加到基地上 |
|
地板#
发布于:2005-05-17 10:10
自己顶一下
看一下这个 http://www.xfocus.net/articles/200408/724.html 能不能根据输出函数设计的数据结构推导出来 哪怕是一个例程,一个变量也请说说 |
|
|
地下室#
发布于:2005-05-17 10:25
再问问:KeAddSystemServiceTable 你是如何获取的? |
|
|
5楼#
发布于:2005-05-17 12:00
再问问:KeAddSystemServiceTable 你是如何获取的? extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; |
|
6楼#
发布于:2005-05-17 15:47
[quote]再问问:KeAddSystemServiceTable 你是如何获取的? extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable; [/quote] 老大眼花了 是 KeAddSystemServiceTable 不是KeServiceDescriptorTable |
|
|
7楼#
发布于:2005-05-18 00:09
再问问:KeAddSystemServiceTable 你是如何获取的? p = (unsigned char *)KeAddSystemServiceTable; :D :D |
|
8楼#
发布于:2005-05-19 11:07
再顶一下,思路是从已知例程的具体实现与未引出的例程之间的关系
周末结贴,请大家不吝赐教 |
|
|
9楼#
发布于:2005-05-19 11:39
再顶一下,思路是从已知例程的具体实现与未引出的例程之间的关系 hook的第一步就是要找到被hook的对象,要找到被hook的对象,就要使用搜索, \"对于服务描述表中的,可以映射ntdll.dll到核心,分析PE文件,找到调用指令处判断服务号,再在服务描述表中按号找 那么其它的例程\" 这也是一种搜索,只不过这个方法具有系统无关性. 对于变量,通过名字了,或者对怀疑地址进行监控. swapconext 老外写的代码,采用硬编码.作为搜索的关键字来用. 在我机器上stop. 在就是动态获得被hook对象地址,这个估计很难.因为不知道: 是否存在一个算法,可以计算当前执行的指令属于哪个内核函数. 估计如果看机器码达到读小说这种程度的人,才能搞出来(如果算法存在) |
|
|
10楼#
发布于:2005-05-19 13:24
如何得到未导出的符号名字?是否使用ln来查找,还是遍历pdb文件得到所有的符号名字呢?
|
|
|
11楼#
发布于:2005-05-22 08:57
如何得到未导出的符号名字?是否使用ln来查找,还是遍历pdb文件得到所有的符号名字呢? ln是什么东东 |
|
|
12楼#
发布于:2005-05-22 12:19
ln是什么东东 List Nearest Symbols a Windbg\'s command |
|
13楼#
发布于:2005-05-22 12:40
[quote]ln是什么东东 List Nearest Symbols a Windbg\'s command [/quote] 还以为是新技术呢,还是用调试符号啊 |
|
|