能力值:
( LV3,RANK:20 )
|
-
-
2 楼
特征码搜索,然后补丁
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
点击 OD菜单中 E,可以看到 imagebase,你要补丁的地址 跟imagebase 是一个固定的差值,
所以 GetModuleHandle + 差值 = 补丁地址.
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
楼上的应该是对的。因为PE里面的RVA是不会变的,改变的只有ImageBase,所以可以使用计算偏移量的方法来补丁。
当然了,搜索特征码也可以的,但是需要额外编写搜索代码,会比较麻烦。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
能否说下如何搜索到特征码吗?。没接触过特征码不是很懂,还请麻烦一下详细说一下好吗?谢谢了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
照你的方法点击E。找不到你说的这个 imagebase。,还请详细说一下好吗?谢谢了
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我就是照楼上的方法在菜单中按E,但是没有找到 这个ImageBase名字的dll模块。能否说下方法谢谢了。对一块没接触过还不是很懂。还请抽空详细帮我解说下。谢谢
|
能力值:
( LV12,RANK:2670 )
|
-
-
8 楼
3#正解!
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
唉,不是的,imagebase是PE文件的一个属性,不是文件名。。。
imagebase又叫“程序基址”,你用Alt+E之后,一般第一行就是EXE文件自己的imagebase。。。
我看你的截图,你的程序基址应该是0x00BF0000吧。。。
DWORD WINAPI FindCode(DWORD dwBase, PBYTE pCode, DWORD dwSize)
{
PBYTE pTmp = (PBYTE)dwBase;
DWORD dwLimit = 0x80000000 - dwSize;
while((DWORD)pTmp < dwLimit)
{
BYTE ch = *pTmp;
if(ch == pCode[0])
{
if(0 == memcmp(pCode, pTmp, dwSize))
{
return (DWORD)pTmp;
}
}
pTmp++;
}
return 0;
}
上面这个代码就是一个简单的搜索特征码的例子,我以前用的,虽然不怎么优美,但是至少能搜出来。。。
第一个参数是程序基址(也就是所谓的imagebase),第二个参数是特征码的指针,第三个参数是特征码的长度,返回值就是特征码的内存地址。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
点击 E之后,如果是汉化版的OD,会有“基址” 这一列, 一般第一行 就是你模块的信息,
其他 #9 已经回答了,
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
以上所有楼层均是正解
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
万分感谢。又多学了一点知识了,谢谢了。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
谢谢各位的热心答复。好人必有好报,愿各位大大2015年行大运。好事连连不断 特别鸣谢:LiXMX 大大。再一次说声谢谢了
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
我算不上大大啊。。。 
主要还是2楼、3楼的思路,我只是把细节多说了几句而已,因为都是入门所以知道迷惑的地方在哪里。。。 
还有8楼的精华数。。。
我擦。。。我比较大的估计只有Kx币数量了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
昨天过节, 我想要你 kx 的 2 .
|
能力值:
( LV3,RANK:20 )
|
-
-
16 楼
太狠了。。。那我就一夜回到解放前了。。。
不过话说回来,看雪的分享精神还是很好的,大家发附件都是免费的,只要登录就可以下载。。。 
不像有些地方,下载这个要3个币,下载那个要10个币。。。 
为了赚几个金币费劲脑汁啊。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
正好在研究一个动态基址的程序,前来学习下,谢谢分享
|
|
|