能力值:
( LV2,RANK:10 )
|
-
-
2 楼
Windbg中有个lm命令,可以看到模块加载的基址,可以用这个基址加上相对便宜量应该可以搜索到。这里仅仅说了windbg的调试,DLL加载近内存也应该有迹可循
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
我用OD可以看到模块加载的基址,可是我困惑的是用内存搜索工具,只能搜索0040开头的地址,一直到00FFFF,不能搜索11这一段地址。
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
一般設計Memory Scanner時,搜尋範圍都是從0000 0000到7FFF FFFF吧?
我記得這個範圍是從SYSTEM_INFO裡拿到的
http://msdn.microsoft.com/zh-tw/library/windows/desktop/ms724958(v=vs.85).aspx
lpMinimumApplicationAddress
A pointer to the lowest memory address accessible to applications and dynamic-link libraries (DLLs).
lpMaximumApplicationAddress
A pointer to the highest memory address accessible to applications and DLLs.
|
能力值:
( LV7,RANK:140 )
|
-
-
5 楼
dll加载地址并不是一成不变的。你机器上的1115CC93地址,应该减去dll的基址得到一个相对偏移,然后在别的机器上获取到dll的基址,加上这个偏移才是你要的地址。OD能看到模块基址,主要不清楚你是什么需求所以没办法给建议
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
是这样的,我在做一个特征码搜索的工具,因为一个游戏经常更新,每次更新后,我那个1115CC93的内存地址的代码都会变,然后我看网上很多人写了这种程序,就是记录一段机器码做为特征码,这段机器码在游戏更新后不会变,然后每次游戏更新后,在游戏里搜索这段机器码,搜到后就实现了自动更新地址的功能。
|
能力值:
( LV5,RANK:60 )
|
-
-
7 楼
先找模块基值
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
模块基址在OD里可以看到,但请问下我如何才能搜索到呢?
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
今天没人上班?
|
能力值:
( LV7,RANK:140 )
|
-
-
10 楼
GetModuleHandle就可以获取基址。但是你的问题似乎不是不同机器的问题,而是更新之后地址可能变动的问题。说到底,获取基址还是必须的,取得基址和模块的大小之后,就可以取得这块内存,远程复制内存的话效率略低,建议直接注入dll来搜索。搜索就很简单了,如果是对齐的就以对齐粒度来递进搜索,非对齐的话就逐字节对比。
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
用快照好了CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, ),再从 modBaseAddr 获得基址。
如果是注入线程的话,直接可以用GetModuleHandle 得到基址。
再找各版本相对不变的十六进制串来定位。
|
|
|