wrtm,终于成功了,进程注入终于成功了
wr啊,要我出动汇编才把tmd搞掂
最后要提出的是,很多朋友在debug下会出现access violation,这是因为在debug下,vc默认在函数返回前调用_checkstack这个crt函数导致的(该函数以偏移量调用,当去到另一个进程时,偏移量就不准确了),可以去掉/Gz编译器选项以解决这个问题。以后还要请大家多多指教,谢谢
wr啊,要我出动汇编才把tmd搞掂
最后要提出的是,很多朋友在debug下会出现access violation,这是因为在debug下,vc默认在函数返回前调用_checkstack这个crt函数导致的(该函数以偏移量调用,当去到另一个进程时,偏移量就不准确了),可以去掉/Gz编译器选项以解决这个问题。以后还要请大家多多指教,谢谢
解决方案 »
- Service开发
- 如何获取托盘图标的 WM_MOUSELEAVE 消息。
- SSDT挂接后 Icesword是怎么知道原始的真实地址的?
- ACTIVEX控件截屏后出现“获取剪贴板数据错误”问题
- 在Edit窗口中怎样接受Table字符?
- 谁有"逆向工程"中的"曲面拟合"程序?送高分!
- 莫名其妙的错误,发生在本来没问题的语句上面,谁来帮帮我。
- 我的程序做好了,但想打包成一个安装程序而且在安装时要求配置数据源该如何做呢?
- 双击应用文档打开应用程序
- 请教:有办法修改lib吗?
- 求一段简单的JAVASCRIPT代码
- 软件调试问题 Invalid Address specified to RtlValidateHeap( 340000, 346f74 )
使用它之前需要准备:
1.提升本进程特权,通常debug就够了
2.准备线程函数
3.使用writeprocessmemory把线程函数写到目标进程
4.createremotethread启动线程
ok
其他什么的如何获取进程句柄,virtualallocex之类就不多说了,msdn上大把事例代码
最为重要的就是那个线程函数,即step2
该函数在正常情况下是不能调用任何函数的,包括crt、api和自定义的函数。但有些是例外的,例如kernel32.dll内的,因为这些函数总是映射到每一个进程的特定位置,有了kernel32.dll的loadlibrary和getprocaddress,你就可以为所欲为了,要注意的是,loadlibrary和getprocaddress也不能用函数名来调用,一定要通过地址来调用,就像:
PLoadLibraryA pllba = (PLoadLibraryA)0x7C801D77;
HMODULE huser32 = pllba(tmp);// tmp="my.dll"
还有就是在线程内不能使用常量,特别是字符串常量,因为常量的地址不是对应目标进程的
必要时可在线程内嵌入汇编
_asm
{
int 3;// 这个的作用不用说了吧
}
这是为了在release下也能启动调试器来调试目标进程内我注入的那个线程
以上,个人见解
请指点一下,谢了