首页
社区
课程
招聘
[已解决]大家新年好,请教一个寻指定内存地址数值的编程方法
发表于: 2018-1-1 14:23 3434

[已解决]大家新年好,请教一个寻指定内存地址数值的编程方法

2018-1-1 14:23
3434

图片有点大,地址 6F60E738是固定的,指向 MOV DOWRD PTR DS:[ESI+0X4], EDI,现在我知道 6F60E738的地址,但是他指向的内存地址在每次启动程序后都是变动的,比如这里是163304A8,数值为00,这里请教大家,有什么办法通过 6F60E738读取到指向的内存地址163304A8的数值吗?

麻烦大家帮忙解答下,谢谢,新年快乐!


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
2
估计要用到GetThreadContext了
2018-1-1 15:07
0
雪    币: 222
活跃值: (739)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
回溯,往上级函数找
2018-1-1 15:17
0
雪    币: 775
活跃值: (2292)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
跟esi的来源或者hook都可以的 
2018-1-1 16:15
0
雪    币: 193
活跃值: (857)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
恩  谢谢  我试试找基址 
2018-1-1 21:59
0
雪    币: 193
活跃值: (857)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
Lixinist 估计要用到GetThreadContext了
GetThreadContext(线程句柄,线程环境)  获取到线程环境后,如何定位到6F60E738这个地址获取寄存器数值呢?
2018-1-1 22:27
0
雪    币: 193
活跃值: (857)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
AperOdry 跟esi的来源或者hook都可以的
我只知道hook进程的某个API(是注入DLL吧),但是如何hook进程获取6F60E738对应的edi的数值?抱歉,hook用的不是很多!
2018-1-1 22:30
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
8
esi是this指针吧?ida看下原形,直接函数头部下钩子开搞就是了
2018-1-2 08:57
0
雪    币: 782
活跃值: (3430)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
9
4楼说得对。
往上翻一翻,看看esi是哪里来的,不过有时候也许会很麻烦。
hook比较简单。在6F60E738这里,写入汇编代码,大概流程是这样的:
6F60E738  :  jmp  xxxx    【此处jmp指令会破坏5字节,xxxx地址由你自己申请】

地址xxxx:mov  dword  ptr  [yyyy],esi    【此处将esi保存到地址yyyy处,yyyy地址由你自己申请】
                              :mov  dowrd  ptr  [esi+4],edi  【恢复被破坏的指令】
                              :pop  edi【恢复被破坏的指令】
                              :pop  esi【恢复被破坏的指令】
                              :jmp  6F60E73D【跳转回正常流程】
这样你就把地址储存在yyyy这里了,随便什么方式都可以读到
2018-1-2 10:15
0
雪    币: 193
活跃值: (857)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
yeyeshun 4楼说得对。 往上翻一翻,看看esi是哪里来的,不过有时候也许会很麻烦。 hook比较简单。在6F60E738这里,写入汇编代码,大概流程是这样的: 6F60E738 : jmp xxxx 【 ...
谢谢yeyeshun的回复,原来这样的处理也叫hook,之前也百度找到了思路,但是没有你的详细,谢谢你!
2018-1-2 11:15
0
游客
登录 | 注册 方可回帖
返回
//