摘要:
调试器进程经过注册后,每当调试者发生调试事件(Debug Event)时,OS就会暂停其运行,并向调试器报告相应事件.调试器处理事件后,被调试者继续运行. 调试器必须处理EXCEPTION_BREAKPOINT异常,对应汇编指令为INT3,IA-32 编码为0xCC. 调试器只需要在断点的起始位置将 阅读全文
摘要:
钩取的流程: 1.使用反汇编/调试器把握程序的结构和工作原理. 2.开发需要的"钩子"代码,用于修改Bug,修改程序功能. 3.灵活操作可执行文件与进程内存,设置"钩子"代码. 使用场景: 程序无源代码或难以修改. API: Application Programming Interface,应用程 阅读全文
摘要:
说白了就是将汇编指令直接转换为IA-32的16进制格式.// CodeInjection2.cpp // reversecore@gmail.com // http://www.reversecore.com #include "windows.h" #include "stdio.h" typed 阅读全文
摘要:
文件共享服务器: 使用CIFS协议(由微软开发,Windows自带全可用) 需要将服务器和客户机置于同一个局域网下,同时开启相关服务. 直接在命令行中输入 // 服务器IP地址 就可以访问. 客户机登录时,其访问权限在本地NTFS权限和共享权限中取交集. 对于多个用户,又要要求有不同的权限,在共享- 阅读全文
摘要:
实现代码注入不仅需要将需要执行的代码写入对应的进程,还需要将对应的数据也写入其中. 代码注入是一个可执行程序对另一个程序的注入,main函数通过调用InjectCode函数实现注入 BOOL InjectCode(DWORD dwPID) { HMODULE hMod = NULL; THREAD_ 阅读全文
摘要:
前面的代码没有什么特别的意义,了解即可.需要注意的是dummy这段代码. 前面的代码主要是为了执行想要的功能,在一加载DLL时就能执行.而dummy()函数是为了保证此DLL文件能够顺利的添加到TextView.exe文件的导入表中(然后由程序在执行时会加载此DLL文件). PE文件中的IDT(Im 阅读全文
摘要:
DLL卸载是通过调用 FreeLibrary() API. 每个内核对象( Kernel Object )都拥有一个引用计数( Reference Count ),代表对象的被使用的次数. 使用LoadLibrary() 会 +1, FreeLibrary() 会 -1.FreeLibrary() 阅读全文
摘要:
使用LoadLibrary()API加载某个Dll时,Dll会被加载到进程,然后会自动运行DllMain()函数. OS会将已注册的Dll直接注入目标进程,这也是上一章能成功的原因. Dll注入主要使用以下三种方法: 1.创建远程线程 CreatRemoteThread(). 2.使用注册表( Ap 阅读全文
摘要:
Windows向用户提供GUI,以事件驱动的方式工作. 常规的Windows消息流: 发生键盘输入事件时,WM_KeyDown消息被添加到OS消息队列. OS判断哪个应用程序发生了事件,然后从OS消息队列重取出消息,添加到应用程序的消息队列中. 应用程序监视自身的消息队列,发现新添加的消息后,调用相 阅读全文
摘要:
4010F5 - 401249 xor 44 401007 - 401086 xor 7 4010F5 - 401249 xor 11 4010F5 - 401249 校验和 40124A - 401280 xor 17 程序很简单,循环做几个xor , 一个校验和. 两种思路,第一是将代码写到不被 阅读全文