能力值:
(RANK:10 )
|
-
-
2 楼
我想到了一个方法,就是联网由服务器传回我这个exe应该是正确的MD5的值,然后显示出来,如果要把这个正确的MD5值存储在exe文件本身某个位置,然后显示出来,那应该是不可能的,因为存储md5值得地方预先是不知道什么值,以后知道是某个值后,一旦填写进入,又会改变整个exe的MD5值,那填写的MD5值又不正确了。
后来我又运行了那个显示自身MD5值得程序,我改变了1个字节以后,其显示的自身md5值也随即改变了,并不是固定的初始不变的正确的值,那么原来这个显示自身md5值的程序是计算好自己的exe以后再显示出来,那么就是多此一举了,这样又不能防止程序被别人修改,别人修改以后,你显示的md5值就是修改以后的md5值,那要你显示干什么,应该能显示永远不变的一个正确的md5值才对。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
可以存储在一个加密的文件里面 你读取的时候再解密比较
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
可能是这个程序在运行的时候才计算自身exe的MD5码,然后显示出来
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
程序运行时就可以读自己的hex 然后做hash啊。为什么一定要存起来...
|
能力值:
(RANK:10 )
|
-
-
6 楼
是的,自己计算自身的MD5再显示,这个MD5肯定是对的,但是不起作用。因为exe不被修改,原始有一个MD5,比如12345678xxxxxxxx。如果修改了,就不是12345678XXXX了,显示当前MD5为49baXXXXX,那这有什么意义呢?如果修改以后,仍然显示MD5是12345678xxxxxx,那样才有意思,那样,我可以用另一个校验器计算exe的md5为49baxxxxx,然后和程序显示的12345678xxxx一对比,发现不对,知道exe已经被修改。如果程序显示就是49baxxxx,我不能发现md5是错的,那也不能发现程序exe被修改了。所以,运行的时候计算自身exe的MD5码,然后再显示出来,就是一个自欺欺人的做法。或者说是程序员糊弄老板说任务完成了的做法,实际不能起到防止exe被修改而显示正确原始MD5的目的。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
应该会留几个字节存放MD5值。楼主可以参考常见的壳的文件检验的写法。
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
md5值由网络提供,自己在内存中的程序哈希自己硬盘上的文件仅此而已。
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
md5也可以由配置文件提供。而不是自身包含。否则就是找md5冲突God
|
能力值:
( LV6,RANK:80 )
|
-
-
10 楼
请注意,显示的MD5是磁盘镜像文件的MD5,而显示是运行在内存里面显示的。它直接读取磁盘镜像显示出来不就行了,和所有MD5显示没有任何区别。
|
能力值:
( LV6,RANK:80 )
|
-
-
11 楼
你要显示那个也不难--把显示md5的部分放在外部的dll/配置文件 里面就行了............
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
有些程序把MD5放在程序结尾,计算MD5的时候并没有算上结尾,只是算上程序本身部分
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
计算MD5时排除那个几存放MD5值的字节。 这样一般用于自效验。
|
|
|