能力值:
( LV2,RANK:10 )
|
-
-
26 楼
HOOK 系统dll的API?通过这API执行注入的代码?这样GetCurrentProcess()这类的不会变成自己的进程吗
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
注入后直接用汇编取
用PDWORD^等取
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
大家都没理解这小兄弟的意思
是注入DLL后,怎么和自己的exe互动通信
绕过读写检测
各位兄弟觉得这方法的效率,可以有 ReadProcessMemory 效率高不
已易语言乱J8高强度读写,这方法应该不及 ReadProcessMemory 效率
下面兄弟继续
|
能力值:
( LV3,RANK:20 )
|
-
-
29 楼
只要你的代码能被执行, 目的就达到了, 后续如何完全看你操作, 比如改主进程代码来跳到自己的代码, 建立线程, 建立事件触发等等, 这取决于你的目的, 并不就一定要求常驻, 有些patch启动时改一次就完事了, 后面的事情还需去理会?
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
dll注入成功后,那么这个dll就被加载到目标进程的地址空间,此时ReadProcessMemory和WriteProcessMemory操作的就是目标进程的内存,如错需要和自己的进程通信,就用管道,邮槽,文件读写之类的东西
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
你的 dll 注入到了别的进程中之后,进程的内存就是 dll 的内存,你的 dll 就可以直接访问进程的内存了,比如 *(int*)0x123456 = 0。
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
1、你注入的DLL在被注入进程中,本身就是一个独立线程,即使你注入的DLLMAIN不执行完毕,也不会影响宿主进程的运行。
2、通常指的main执行完毕确实是程序结束,但是通常窗口程序还有一个winproc,没事干的时候他在不停的取消息,你不给他exit消息,他是不会结束的。
3、读写内存,你的dll已经进入对方进程呢,因为进程内存空间的共享,所以你可以随意读取。指针也好memcpy也好,完全随你喜好。简单的说,一个贼已经开了锁,进了门,想怎样随你乐意,你要偷钱,找到钱放在哪里,伸手拿就好了。
4、在你需要的时候操作被注入进程,你可以在DLL创建窗口,注入后打开,随后你把需要的都放这个窗口的按钮上,需要你就点一下,放一个textbox,完成你所谓的通讯。哪怕在找个目录写txt都行吧?端口监听呢?各种花式。
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
大神有没有不创建线程通讯的方法
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
效率没系统直接读写搞,满足不了易语言那变态循环的
做下测试互动下,还可以
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
很多方法吧 可以远线程启动自己的函数
|
能力值:
( LV3,RANK:30 )
|
-
-
36 楼
这个去看下windows程序运行时的内存空间就知道了,先补保护模式的知识,再补PE知识,然后是DLL加载和重定位知识。DLL加载后内存某段会映射到程序的内存空间,然后就想读什么想写什么看权限和心情了。一般注入后,DLL自己会加载原DLL,然后用户程序call一个function,把参数拿到,自己处理下,传给原来的DLL让程序正常运行,从而达到监听数据的目的。
|
能力值:
( LV3,RANK:20 )
|
-
-
37 楼
dll 加载到对方程序上,此时你的dll和目标程序是在弄一个进程,也就是共享一份内存地址空间,你想怎么弄就怎么弄呗
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
即然Dll都注入了,直接指针读写就可以了,快捷方便。
delphi:
pbyte($0045608e)^:=$90;//汇篇中NOP
C++:
__byte *test;
test=( __byte *)0x0045608e;
*test=0x90;
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
进程和DLL的关系,搞懂就OK了
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
我感觉你们都没回答到点子上去,dll里面可以创建窗口,窗口上可以有个按钮,单击按钮,你就可以干任何事情了
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
不创建线程通讯的办法很多,我一般用SOCKET
流程 DLL注入以后作为客户端链接到自己的服务端EXE
然后你想要做什么就在DLL里面响应EXE的响应的通讯请求
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
这个办法有点落后了适合拿来测试
但是要达到一台机器控制几百太机器正常运行还是要用SOCKET的
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
注入:我一般用的有3种 1.首先在目标申请内存,然后向申请到的内存写入你的DLL文件路径,然后取得目标进程的LoadLibrary函数的地址,然后再用创建远程线程函数CreateRemoteThread,函数地址传LoadLibrary地址,函数参数传你申请到的写入了DLL路径的内存地址,GetExitCodeThread可以得到LoadLibrary返回值。
2.就是消息钩子,还有其他。
3.修改目标进入的导入表,导入表里插入你的DLL一个导出函数就可以了。
进入了目标进程,你读写内存不就向读写本进程的内存一样吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
进程通讯,不创建线程,那你就创建共享内存,内存结构为一个通讯消息数组,发送时向数据加入一个成员,而接收端接收取出数据后删除此数组成员。
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
建议楼主举个读取失败的例子,这样大家也好讨论
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
DLL 用TCP,或者 UDP 通讯!
|
能力值:
( LV9,RANK:146 )
|
-
-
47 楼
别天天逛看雪论坛,吾爱论坛VC驿站了,可以出去旅旅游,看看书,跑跑步 散散心 ,和自己的朋友说说交心话 ,你会发现,还是搞代码有意思
|
能力值:
( LV7,RANK:140 )
|
-
-
48 楼
不创建新线程的方法也有,hook某函数或者某段代码,当程序运行到那里,就会执行你的代码,执行完了就回去了。
或者异常处理
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
其实楼上也都说的差不多了
1. 创建线程
2. Hook你关心的内容的相关代码
|
能力值:
( LV2,RANK:10 )
|
-
-
50 楼
asm读写啊
|
|
|