12 2011 档案

回首2011展望2012
摘要:回首2011展望2012今天是圣诞节,卖苹果的、闪着星星的圣诞树以及戴着圣诞帽的人们,都为这节日增添不少气息。是该对过去的2011留下只言片语并展望2012的时候了。早上破解了一个商业软件。很兴奋,却没有写出注册机。这东西需要很大的技术含量,显然我的能力还不够。过去的2011,每天就沉浸在这些东西中,越往后走就越觉得要学的东西越来越多,懂得的东西越来越少。每天都是忙忙碌碌的,其实我只是让自己忙起来,让生活充实一点。生活每天都在继续,没有什么东西会每天给你带来惊喜。程序不一样,在它完美运行的那一刻我会感到前所未有的快感和幸福,现在我仍然追求这种感觉。不知不觉大三已经过去一半,明年的现在已经去实习 阅读全文

posted @ 2011-12-24 23:19 ithzhang 阅读(132) 评论(0) 推荐(0)

深入理解指针函数
摘要:在写《windows核心编程系列》谈谈修改导入段拦截API中,遇到了函数指针,由于以前接触甚少,花了很久才弄明白。见到一篇文章,对函数指针介绍的比较好。便转载至此。转自:http://blog.sina.com.cn/s/blog_5e8facd20100qn20.html1.指针函数的定义顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列);其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数. 阅读全文

posted @ 2011-12-14 20:17 ithzhang 阅读(175) 评论(0) 推荐(0)

《windows核心编程系列》谈谈修改导入段拦截API。
摘要:一个模块的导入段包含一组DLL。为了让模块能够运行,这些DLL是必须的。导入段还包含一个符号表。它列出了该模块从各DLL中导入的符号。当模块调用这些导入符号的时候,系统实际上会调用转换函数,获得导入函数在导入表的地址,然后再跳到相应的位置。如果我们能将导入段中相应导入函数的地址替换成自定义的函数的地址,即可实现对该函数的拦截。在自定义的函数中,我们既可以调用拦截的函数,也可以执行其他工作。要实现修改导入段来拦截API必须对PE文件格式有很好的了解。网上关于它的资料铺天盖地,自己搜吧。此处不打算介绍。为了修改要拦截的函数在导入段的地址,首先要获得PE文件导入段的地址。这可以调用ImageDire 阅读全文

posted @ 2011-12-14 19:49 ithzhang 阅读(297) 评论(0) 推荐(0)

用MFC输出所有导入函数名称时遇到的问题。
摘要:用MFC写通过修改导入段的IAT来达到API拦截程序时,写了一个函数列举了所有导入函数的函数名。、看代码:HMODULE hModule=GetModuleHandle(NULL); ULONG size; PIMAGE_IMPORT_DESCRIPTOR pImport=(PIMAGE_IMPORT_DESCRIPTOR)ImageDirectoryEntryToData (hModule,true,IMAGE_DIRECTORY_ENTRY_IMPORT,&size); CString name; while(... 阅读全文

posted @ 2011-12-13 12:38 ithzhang 阅读(223) 评论(0) 推荐(0)

《windows核心编程系列》谈谈基址重定位和模块绑定
摘要:每个DLL和可执行文件都有一个首选基地址。它表示该模块被映射到进程地址空间时最佳的内存地址。在构建可执行文件时,默认情况下链接器会将它的首选基地址设为0x400000。对于DLL来说,链接器会将它的首选基地址设为0x10000000,然后将该地址以及代码、数据的相关地址都写入它们的PE文件中。当它们被加载时,加载程序读取首选基地址的值,并试图把它们加载到相应位置。对于可执行文件和DLL中的代码,它们运行的时候所引用的的数据的地址,在链接的时候就已经确定。并且这些都是当exe文件或是DLL被加载到它们的首选基地址处时才是有效的。 对于汇编代码:MOV[0x00414540],5 它是将5赋值给0 阅读全文

posted @ 2011-12-09 22:52 ithzhang 阅读(278) 评论(0) 推荐(0)

《Windows核心编程系列》谈谈DLL高级技术
摘要:本篇文章将介绍DLL显式链接的过程和模块基地址重定位及模块绑定的技术。 第一种将DLL映射到进程地址空间的方式是直接在源代码中引用DLL中所包含的函数或是变量,DLL在程序运行后由加载程序隐式的载入,此种方式被称为隐式链接。 第二种方式是在程序运行时,通过调用API显式的载入所需要的... 阅读全文

posted @ 2011-12-07 22:24 ithzhang 阅读(372) 评论(0) 推荐(0)

《windows核心编程系列》谈谈使用远程线程来注入DLL。
摘要:windows内的各个进程有各自的地址空间。它们相互独立互不干扰保证了系统的安全性。但是windows也为调试器或是其他工具设计了一些函数,这些函数可以让一个进程对另一个进程进行操作。虽然他们是为调试器设计的,但是任何应用程序都可以调用它们 。接下来我们来谈谈使用远程线程来注入DLL。 从根本上说,DLL注入就是将某一DLL注入到某一进程的地址空间。该进程中的一个线程调用LoadLibrary来载入想要注入的DLL。由于我们不能直接控制其他进程内的线程,因此我们必须在其他进程内创建一个我们自己的线程。我们可以对新创建的线程加以控制,让他调用LoadLibrary来载入DLL。windows提. 阅读全文

posted @ 2011-12-05 17:41 ithzhang 阅读(255) 评论(0) 推荐(0)

《windows核心编程系列》谈谈windows钩子
摘要:windows应用程序是基于消息驱动的。各种应用程序对各种消息作出响应从而实现各种功能。 windows钩子是windows消息处理机制的一个监视点,通过安装钩子可以达到监视指定窗口某种类型的消息的功能。所谓的指定窗口并不局限于当前进程的窗口,也可以是其他进程的窗口。当监视的某一消息到达指定的... 阅读全文

posted @ 2011-12-01 16:47 ithzhang 阅读(274) 评论(0) 推荐(0)

导航