06 2013 档案

摘要:在前面的注入代码的章节中,我们利用了VirtualAllocEx来在对方的进程开辟了一块内存,并且将代码复制进对方进程的内存里面,从而执行那段内存的代码,但是这里有一个问题,就是代码不是执行在我们进程内的,所以我们无法像在本进程编程那样直接利用返回值或者传入指针来获取计算结果,这个时候我们可能需要到很多通讯手段,但是这样将会让我们的注入代码变得非常复杂,所以我自己想了一个方法,就是利用VirtualAllocEx开辟的内存区域来进行通讯整体的步骤是这样的:1.在对方的内存开始一块内存,2.复制代码进去3.根据代码计算出我们的结果应该放在哪里,比如我们申请了100字节的内存,其中50字节是代码, 阅读全文
posted @ 2013-06-23 14:04 linyilong 阅读(1173) 评论(0) 推荐(0) 编辑
摘要:从WINDOWS VISITA开始以后,windows已经开始支持随机基址的关系,也就是说以前我们的进程基址都是从0x40000开始的,如果一个变量在我们第一次运行的时候地址为0x50000,那么以后也都会在这个位置而VS2008后开始提供随机基址的功能,在WINDOWS VISITA后的版本也都支持这个功能,这样进程的基址将不会再固定从一个地方开始,变量的地址也会随着基址的不同而不同,加大了我们对一个进程修改的难度,我们每次修改一个变量不能再将变量写死,而是要根据基址+数据偏移量来算出数据的地址,那么,我们怎么去获得一个进程的基址呢??在我们程序运行的时候,我们进程自己的HINSTANCE或 阅读全文
posted @ 2013-06-20 22:35 linyilong 阅读(6291) 评论(3) 推荐(1) 编辑
摘要:有使用过外挂的朋友应该知道,我们在玩游戏的时候,有很多辅助功能给你使用,比如吃药,使用物品等功能,这个时候我们就是使用注入代码的技术,简单的来将就是我们让另外一个进程去执行我们想让它执行的代码,这中间的关键函数是CreateRemoteThreadHANDLE WINAPI CreateRemoteThread( _In_ HANDLE hProcess, _In_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ SIZE_T dwStackSize, _In_ LPTHREAD_START_ROUTINE lpStartA... 阅读全文
posted @ 2013-06-17 22:39 linyilong 阅读(19222) 评论(16) 推荐(10) 编辑
摘要:在windows下,不管是进程还是句柄或者文件,他们都可以抽象为一个HANDLE,如果有接触过linux编程的都知道,linux下一切皆文件,对进程,文件,socket的操作都是通过int来标识的,windows下的HANDLE概念也跟linux下的int概念差不多,都可以归结为类似与ID的数据类型,只是表示形式不一样,我们对于所有对象的操作都需要通过这个标识来传递当然在WINDOWS下还包括HICON,HWND等,大部分都是UI相关的,我们值需要知道HWND是操作窗口的标识符,HICON是图标的标识符,我们后面将会讲到如何通过窗口来操作其他进程如果我们要操作其他的进程,首先需要的肯定是要能够 阅读全文
posted @ 2013-06-12 16:46 linyilong 阅读(6314) 评论(0) 推荐(1) 编辑
摘要:1.需要用到的函数学过Windows编程的应该都知道,Windows的核心机制是消息机制,消息是操作系统告诉应用程序发生了什么事情,比如当用户移动了鼠标或者按键后,操作系统会通知应用程序实际上在Windows下,我们可以监控操作系统发送给另外一个进程的消息,然后决定对这个消息怎么处理,比如继续发送,或者改变消息,或者不让这个消息发给应用程序,也可以让应用程序处理完消息后通知监控的进程 这些都依赖一个API,SetWindowsHookExHHOOK WINAPI SetWindowsHookEx( _In_int idHook, _In_HOOKPROC lpfn, _In_HINSTA... 阅读全文
posted @ 2013-06-09 16:40 linyilong 阅读(3920) 评论(1) 推荐(1) 编辑