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

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

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


我回家把我写的计算函数贴上去,免得以后再有人找不到,呵
2006-7-10 09:43
0
雪    币: 489
活跃值: (112)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
_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;
	}
}
2006-7-10 17:07
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主,你好,你的代码我看不懂,能否麻烦你把计算的过程表述下可以吗?
万分感谢!
2006-11-15 13:29
0
游客
登录 | 注册 方可回帖
返回
//