在windows平台做逆向.外挂等,经常需要调用很多未导出的内核函数,怎么方便.快速查找了?可以先用IDA等工具查看硬编码,再根据硬编码定位到需要调用的函数.整个思路大致如下: 1.先查找目标模块   遍历模块的方式有多种.既然通过驱动在内核编程,这里选择遍历driverObject的DriverSection字段来遍历内核所有模块,核心代码如下: /* 可以用来动态查找内核模块的基址,后续用于: 1.PTE\PDE等base计算 2.其他函数.变量精确位置的计算(IDA静态分析只能查到偏移)…
原文链接:使用GCC创建 Windows NT 下的内核DLL 在温习<<Windows 2000 Driving>>分层驱动程序一章的时候,看到了关于紧耦合驱动连接方式,这种方式不依赖于I/O管理器的串联,而是直接调用内核例程,这样可以大大的提高驱动的执行效率. 为了实现这样一种功能,必须提供一种类似于在用户模式中DLL的机制,只不过该"DLL"是加载到内核中的.其实Windows NT 内核本身早就利用了这样机制,比如Hal.dll.ntoskrnl.exe…
一.写作初衷 在Windows下单个DLL可能存在多个不同的版本,若不特别指定DLL的绝对路径或使用其他手段指定,在应用程序加载DLL时可能会查找到错误的版本,进而引出各种莫名其妙的问题.本文主要考虑以下两个方面: a. 参考MSDN,给出Windows下DLL查找顺序 b. 简单使用ProcessMonitor来验证DLL查找顺序 二.DLL查找顺序 (本部分多数内容是参考MSDN上的Dynamic-Link Library Search Order一文,链接如下http://msdn.mic…
在Windows中开发DLL时,经常会需要获取当前DLL所在目录以便读取同目录下的其他文件,而目前Delphi在开发android时,其实没多大必要获取,因为整个工程只有一个so文件,而这个so文件也可以通过引用System.IOUtils,再使用TPath.GetLibraryPath()即可. 不过有时候我们确实需要用到类似Windows中GetModuleFileName和GetModuleHandle等函数, 这些我们应该如何在android中去实现呢? 1.linux中的进程管理/pr…
在windows下解压缩Linux内核源代码出现重复文件原因 2009年06月30日 13:35 来源:ChinaUnix博客 作者:embededgood 编辑:周荣茂     原因一.因为在Linux下文件名是大小写敏感的,而Windows下文件名则是大小不敏感,所以对于同一目录下如果有两个文件不同名但大小写不一样时在windows下会有问题.如kernel source中的include/linux/netfilter_ipv4/存在ipt_ecn.h和ipt_ECN.h,在linux这是…
Qt Windows下链接子系统与入口函数(终结版) 转载自:http://blog.csdn.net/dbzhang800/article/details/6358996 能力所限,本讨论仅局限于MSVC的cl编译器和MinGW的gcc编译器. 第一部分:不涉及Qt(理清链接子系统和入口函数) 第二部分:Qt的链接子系统和入口函数(与第一部分完全对应上) 第三部分:QtTest模块出现控制台的原因与方案 第四部分:Graeme Gill 给出的很有意思的代码. 再探 链接子系统 在  浅谈Co…
一.内核原型(linux2.6.28-7) long (*compat_ioctl)(struct tty_struct *tty, struct file * file,                      unsigned int cmd, unsigned long arg);      implement ioctl processing for 32 bit process on 64 bit system      Optional 二.What is compat_ioctl…
目录 第1章说明    2 1.1 查找顺序    2 1.1.1 检查DllCharacteristics字段    3 1.1.2 读取manifset资源    3 1.1.3 读取manifset文件    4 1.1.4 载入    5 1.1.5 私有程序集    5 1.1.6 常规DLL的查找顺序    7 1.2 禁用隔离    7 1.2.1 修改DllCharacteristics字段    7 1.2.2 修改manifset    9 1.2.3 修改msvcr*.dl…
问题背景 一个内核模块中,需要通过d_path接口获取文件的路径,然后与目标文件白名单做匹配. 在生产环境中,获取的文件是存在的,但是与文件白名单中的文件总是匹配失败. 问题定位: 通过打印d_path返回的字符串,发现获得的路径后面多了一个" (deleted)"字符串,在做完全匹配时不通过. 看了d_path函数说明:如果entry被删除了,会添加" (deleted)"字符串. * Convert a dentry into an ASCII path nam…
一丶内核中的数据类型 在内核中.程序的编写不能简单的用基本数据类型了. 因为操作系统不同.很有可能造成数据类型的长度不一.而产生重大问题.所以在内核中. 数据类型都一定重定义了. 数据类型 重定义数据类型 Unsigned long ULONG Unsigned char UCHAR Unsigned int UINT Void VOID Unsigned long * PULONG Unsigned char * PCHAR Unsigned int * PUINT Void * PVOID…