首页
社区
课程
招聘
[求助]如何随机栈的地址?
发表于: 2017-6-20 09:41 4605

[求助]如何随机栈的地址?

2017-6-20 09:41
4605

           游戏发现一种外挂,通过修改指定内存实现。 通过分析发现,有个第三方组件传给我们的buff, 每次的地址都是一样的。 外挂就是通过修改这段buff实现的。

问题:

1、windows 平台 vs 编译的exe, 栈空间的某一临时变量地址每次都一致吗? 进程生命周期内我还能理解,为什么进程重新启动了,还是一样呢?

2、如果只要exe确定了,这块内存的地址是固定的, 有没有什么技术可以使得程序每次生成的实例某一线程的栈空间地址是随机的?

3、aslr)是一种针对缓冲区溢出安全保护技术,通过对、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术。 这个我百度了下,默认是启动了,为什么没效果呢?

4、外放程序是加壳的,但是外挂每次还是能定位到这个地址,一般什么技术可以做到?(CE已经被排除了)

5、writeprocessmemory这个函数只能在Ring0下判断是否合法,在ring3下, 我能有什么方法来检测到其修改吗?


先提问题,回头我自己写个demo测试下。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
你就不能给BUF加个密
如果不能加密的话
栈回溯检测吧

1、因为爱情
2、栈空间地址本来就是随机的啊
3、加vm  加混淆  服务器动态下发代码
4、不建议你搞这种检测
2017-6-20 09:50
0
雪    币: 230
活跃值: (137)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
hzqst 你就不能给BUF加个密 如果不能加密的话 栈回溯检测吧 1、因为爱情 2、栈空间地址本来就是随机的啊 3、加vm 加混淆 服务器动态下发代码 4、不建议你搞这种检测

你就不能给BUF加个密

加密会带来极大的性能开销,这个地方会频繁调用。

如果不能加密的话
栈回溯检测吧

1、因为爱情
因为爱情  是什么鬼啊,老铁?

2、栈空间地址本来就是随机的啊
、不是的吧,随机的为什么我打定的地址每次都是一样的啊;

3、加vm    加混淆    服务器动态下发代码
  。。。已经搞了,无效! 
4、不建议你搞这种检测 
ok



2017-6-20 10:05
0
雪    币: 9004
活跃值: (6220)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
同一台机器应该是一样的。
外挂做这个操作如果是堆栈里的buf地址,那么你得考虑外挂是不是hook了你某个地址得到的堆栈。
2017-6-20 13:19
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你的字太多  看的我头都晕了
2017-6-21 15:31
0
雪    币: 12
活跃值: (418)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
1.相对偏移是固定的,  每次获取一下基地址就行..GetModuleHanldexxxxx+xxx即可
2.同上.
3  同上.....
2017-6-22 18:08
0
雪    币: 423
活跃值: (501)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
学会做G了,你就明白上面是怎么实现的了...
2017-6-22 23:23
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
外挂取的是相对偏移,  所以你要改的也应该是相对偏移.
先搞清楚buffer是在哪里哪个时间点被修改的,  就能定位外挂从哪得到的绝对地址
2017-6-23 01:00
0
雪    币: 230
活跃值: (137)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
rrrfff 外挂取的是相对偏移, 所以你要改的也应该是相对偏移. 先搞清楚buffer是在哪里哪个时间点被修改的, 就能定位外挂从哪得到的绝对地址
好的
2017-6-23 13:55
0
游客
登录 | 注册 方可回帖
返回
//