另类的破解——内核编程的欺骗艺术.PDFVIP

  • 98
  • 0
  • 约4.98千字
  • 约 3页
  • 2017-05-30 发布于天津
  • 举报

另类的破解——内核编程的欺骗艺术.PDF

另类的破解——内核编程的欺骗艺术.PDF

2009 年第4 期 前置知识:VC 关键词:破解、GetDriveTypeA、驱动 另类的 “破解” ——内核编程的欺骗艺术 文/ 图 aosemp 相信大家对《大学英语综合教程》这本书并不陌生,它每一本书附有一张CD,很不错, 但这张CD 只能在光驱中播放,把文件全部拷到硬盘下,是不能播放的(即使安装后),会 提示插入光驱。虽然我们可以用虚拟光驱,但是自己破解它更能锻炼动手能力,就让它开启 我的第一次破解征途吧! 仔细看其文件,发现启动文件是一个由FLASH 编译成的EXE ,用OD 载入。既然它要 检测光驱,我们可以在GetDriveTypeA 下断点(刚开始我也在CreateFileA 下了断,结果没 有一点有用信息),可以看到程序从C 到Z 盘,依次调用了这个函数。这种情况下,大家一 线 定会在断下后通过读汇编代码,一步步弄懂程序流程,但是我刚接触破解,而且这也不合我 的“另类的破解”目的。 防 处 那么我是怎么想的呢?首先放入光盘,运行硬盘上的程序,可以运行。用 Wsyscheck 查看文件路径,是 “H:\dir\start.exe”,说明新建了一个进程,而且是读取光盘中的文件。这 又有两种情况,一是找到光驱盘符 H 后,用 strcat 连接了\dir\start.exe ,另一种是通过 客 出 FindFirstFile/FindNextFile 查找start.exe。先不管这些,我们将文件COPY 到硬盘根目录下, 现在 start.exe 在 “E:\dir\start.exe”。通过 OD,当GetDriveTypeA 的参数是 “E:\ ”时,将它 黑 明 的返回值03 (DRIVE_FIXED )改成05 (DRIVE_CDROM ),取消断点,F9 运行。成功了, 不再提示(最开始没有成功,后来对比发现少了一个 skysupathno1b.dat 的空文件,1b 表示 一册下)! 注 但这样明显没有通用性,但思路却出来了,通过编程将GetDriveTypeA返回值改掉。个 人感觉RING0下Hook SSDT 比较简单方便,就用它了。通过查资料,我在《Windows NT 2000 请 Native API Reference》一书中找到了ZwQueryVolumeInformationFile函数: Related Win32 Functions 载 GetVolumeInformation,GetDiskFreeSpace,GetDiskFreeSpaceEx,GetDriveType 转 但 我 Hook ZwQueryVolumeInformationFile 时 总 是 编 译 不 成 功 , 提 示 ZwQueryVolumeInformationFile 是一个导入函数。于是只好在GetDriveTypeA 下断后,F7 跟 进 , 发 现 竟 不 是 调 用 的 ZwQueryVolumeInformationFile , 而 是 ZwQueryInformationProcess !该函数的声明如下: NTSYSAPI NTSTATUS NTAPI ZwQueryInformationProcess( 2009 年第4 期 IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, OUT PVOID ProcessInf

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档