首页
社区
课程
招聘
[求助]VFP的APP文件头最后一个WORD表示的校验和是怎样计算出来的啊
2006-7-9 21:00 6451

[求助]VFP的APP文件头最后一个WORD表示的校验和是怎样计算出来的啊

2006-7-9 21:00
6451
收藏
免费 7
打赏
分享
最新回复 (5)
雪    币: 489
活跃值: (107)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
NoneName 1 2006-7-10 09:19
2
0
呵,人气还高,回得不多,自己回一下吧。
baidu&google了NNN多次也没有找到,只好自己动手啦。唉,这个懒毛病什么时候能改。
用OD加载VFP,在ReadFile设置断点。从VFP命令窗口里面do a.app。
然后跟啊跟,从指令中看到熟悉的FEF2之类的,说明我们到地方了。在检验和的WORD上下内存断点。断下的时候就是算检验和的地方啦。好了,有详细的计算方法。不过算法指令有些麻烦。我重写得比它简单一半。好了,OK啦。
雪    币: 38374
活跃值: (19370)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2006-7-10 09:34
3
0
很高兴你能自己解决。
论坛上对VFP研究的人并不多,一些高人,如Aming、dm等肯定知道,不过他们也难得上论坛一次了。
雪    币: 489
活跃值: (107)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
NoneName 1 2006-7-10 09:43
4
0
最初由 kanxue 发布
很高兴你能自己解决。
论坛上对VFP研究的人并不多,一些高人,如Aming、dm等肯定知道,不过他们也难得上论坛一次了。


我回家把我写的计算函数贴上去,免得以后再有人找不到,呵
雪    币: 489
活跃值: (107)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
NoneName 1 2006-7-10 17:07
5
0
_declspec(naked) WORD AppCheckSum(unsigned char *p)
{
	_asm
	{
		push	ebx;
		push	ecx;
		push	esi;
		mov	esi,[esp+0x10]
		mov	eax,0xFEF2
		xor	ecx,ecx;
cont:
		rol	ax,8;
		xor	al,[esi+ecx];
		xor	edx,edx;
		mov	dl,al;
		shr	dl,4;
		xor	eax,edx;
		mov	dl,al;
		mov	ebx,eax;
		shl	ebx,7;
		xor	edx,ebx;
		shl	edx,5;
		xor	eax,edx;
		inc	ecx;
		cmp	cl,0x25;
		jb	cont
		pop	esi;
		pop	ecx;
		pop	ebx;
		retn	4;
	}
}
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
行者孙 2006-11-15 13:29
6
0
楼主,你好,你的代码我看不懂,能否麻烦你把计算的过程表述下可以吗?
万分感谢!
游客
登录 | 注册 方可回帖
返回