首页
社区
课程
招聘
未解决 [悬赏][求助]dll注入到寄主进程后,在createthread的线程中读写内存。 100.00雪花
发表于: 2017-12-17 21:20 4373

未解决 [悬赏][求助]dll注入到寄主进程后,在createthread的线程中读写内存。 100.00雪花

2017-12-17 21:20
4373
现在的背景是这样。
写了个dll注入到了游戏进程(唔。。是个外挂 o_o )
注入进去后,点下开始,我会CreateThread一个线程
然后我在线程里做事情。
例如:
while (true) do
打怪()
sleep(1000)
end

打怪操作时,会用指针读写内存
最近游戏检测是如果不是游戏的主线程读写内存,游戏就会报错(也可以理解是线程不同步原因导致的)
我尝试通过发送消息给游戏主线程读写内存就没事,但是我发现这样实现起来好麻烦。
所以想请教下各位有没有其他好方法,在Thread中读写内存的时候,自动hook到主线程去执行。
谢谢大家

———————————————————————————————以下补充——————————————————————————————
我坐着思考了下,我为什么不直接在开始的时候,就在主线程里运行呢。
但是这样就会碰到另一个问题,我之前在线程中的sleep(1000)放到主线程中要怎么实现呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 757
活跃值: (135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
procedure  TForm1.Button2Click(Sender:  TObject);
var
inhwnd:Hwnd;
ThreadID:  DWORD;
hProcess_N:  THandle;
begin
inhwnd:=  FindWindow(nil,'shadow');
GetWindowThreadProcessId(InHWND,  @ThreadID);
hProcess_N  :=  OpenProcess(PROCESS_ALL_ACCESS,  False,  ThreadID);
injectfunc(InHWND,@show,nil,0);
end;
2017-12-18 10:43
0
雪    币: 45
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
分手锅都带走 procedure TForm1.Button2Click(Sender: TObject); var inhwnd:Hwnd; ThreadID: DWORD; hProcess_N: TH ...
这样注入进去会有什么不一样的效果么?
2017-12-18 11:23
0
雪    币: 10939
活跃值: (2895)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
4
找到检测的地方,xxx
2017-12-18 11:27
0
雪    币: 3701
活跃值: (2664)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
5
打小朋友 这样注入进去会有什么不一样的效果么?
在主线程里找到循环体,hook其中一段代码,sleep可以改成记录上一次的时间点,每次循环执行时判断上次时间点与当前时间差,如果相隔1秒就执行你的打怪动作
2017-12-18 11:58
0
雪    币: 45
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
yegu 在主线程里找到循环体,hook其中一段代码,sleep可以改成记录上一次的时间点,每次循环执行时判断上次时间点与当前时间差,如果相隔1秒就执行你的打怪动作
嗯,今早思考了下,GetTickCount可以搞出这种效果。

【在主线程里找到循环体,hook其中一段代码】这个就可以实现子线程中读写内存时跳到主线程中读写么
2017-12-18 13:40
0
雪    币: 635
活跃值: (1011)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
主线程本身能不能暂停啊,可不可以考虑把劫持主线程的eip,执行自己shellcode,完事了在回去
2017-12-18 14:34
0
雪    币: 45
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Justgoon 主线程本身能不能暂停啊,可不可以考虑把劫持主线程的eip,执行自己shellcode,完事了在回去
主线程要循环还得要用setTimer。。
2017-12-18 14:41
0
雪    币: 45
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
Justgoon 主线程本身能不能暂停啊,可不可以考虑把劫持主线程的eip,执行自己shellcode,完事了在回去
大神有详细的代码示例不?
2017-12-18 15:17
0
雪    币: 3701
活跃值: (2664)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
10
打小朋友 嗯,今早思考了下,GetTickCount可以搞出这种效果。 【在主线程里找到循环体,hook其中一段代码】这个就可以实现子线程中读写内存时跳到主线程中读写么
hook主线程代码段的效果就相当于在主线程插入一段自己的代码函数,而游戏的主线程肯定有一个循环体在不断的跑的
2017-12-18 16:25
0
雪    币: 45
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
yegu hook主线程代码段的效果就相当于在主线程插入一段自己的代码函数,而游戏的主线程肯定有一个循环体在不断的跑的
原来如此。
然后还想再问下GetTickCount()
按键(32)
sleep(2000)
按键(49)
sleep(2000)

如果我想写成这样效果
按空格->等2秒->按1键->等2秒
用GetTickCount怎么写出来呢。
我思来想去,没有好用的办法,能发个例子么
2017-12-18 16:44
0
雪    币: 3701
活跃值: (2664)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
12
打小朋友 原来如此。 然后还想再问下GetTickCount() 按键(32) sleep(2000) 按键(49) sleep(2000) 如果我想写成这样效果 按空格->等2秒-&g ...

用1个按键变量标识a和1个上次按键时间变量标识t:
初始a=0,t=当前时间
注:a和t是全局变量
If  a=0:
        If与t时间差>=2秒:
                    按键32
                    a=1
                    t=当前时间
          else:
                    return
else:
          If与t时间差>=2秒:
                      按键49
                      t=当前时间
                      a=0
          else:
                      return
我大概写了一下伪代码,你自己整理
2017-12-18 19:55
0
雪    币: 45
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
把sleep改成gettickcount要写好多的if  else
2017-12-19 09:14
0
雪    币: 3701
活跃值: (2664)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
14
打小朋友 把sleep改成gettickcount要写好多的if else[em_35]
你平时很少写代码吧,这点代码不算多了
2017-12-19 09:51
0
雪    币: 45
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
yegu 你平时很少写代码吧,这点代码不算多了
主要是写起来很乱,看起来就很不舒服。
2017-12-19 12:02
0
雪    币: 3701
活跃值: (2664)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
16
打小朋友 主要是写起来很乱,看起来就很不舒服。
但是比起你去找游戏报错的原因并且解决它,要简单多了
2017-12-19 13:09
0
雪    币: 45
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
然而我试了下,主线程调用也会闪退。
然后我发现闪退的时候偶尔会抛出Privileged  instruction这种异常
2017-12-21 23:12
0
雪    币: 3701
活跃值: (2664)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
18
打小朋友 然而我试了下,主线程调用也会闪退。 然后我发现闪退的时候偶尔会抛出Privileged instruction这种异常
要具体问题具体分析咯,建议你检查下hook的代码是否正确,堆栈是否平衡.
2017-12-21 23:30
0
雪    币: 123
活跃值: (316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
setwindowshookex(WH_CALLWNDPROC,)可以实现你的要求
2018-3-22 00:46
0
游客
登录 | 注册 方可回帖
返回
//