首页
社区
课程
招聘
用小程序或者函数实现简单算法
发表于: 2011-3-23 00:42 9399

用小程序或者函数实现简单算法

2011-3-23 00:42
9399
自己不会编程,,有个很简单的算法,哪位达人帮忙写个小程序,实现它。。或者写个delphi或VC++的函数来实现它。

有个文件aa.bin,以16进制形式读取它的前0x1000个字节,每4个字节为一个单位。记为aa[1],aa[2],aa[3]。。。aa[n]。以此类推。

temp=aa[1]
for i=2 to n
if  temp的最后一个字节如果小于等于0x80,则
temp=temp-aa[i]
否则
temp=temp+aa[i]
end if
temp=temp xor aa[i]
next
输出 temp

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 1240
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
算法已知的话,如果对算法的精髓不太了解,可以写个小程序用穷举法,不停的修改这一部分中某些不重要的部分,试图吻合HASH值

如果了解算法漏洞,可以通过计算精确拟合出你需要的HASH值,比如说MD5撞车程序
2011-3-23 16:44
0
雪    币: 282
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
穷举法想要碰撞出火花实在太难了。。。
2011-3-23 17:17
0
雪    币: 1240
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是啊是啊,MD5的话,不可能,CRC32的话,有点希望。
最好的办法还是分析算法,找到碰撞漏洞
2011-3-24 00:49
0
雪    币: 282
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
列出算法,求达人帮忙。。。
2011-3-28 12:02
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
现在手机上,得玩电脑了,给你写个^_^

LX的写得很好啊^_^
2011-3-28 12:11
0
雪    币: 93
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=streamload;939060]自己不会编程,,有个很简单的算法,哪位达人帮忙写个小程序,实现它。。或者写个delphi或VC++的函数来实现它。

有个文件aa.bin,以16进制形式读取它的前0x1000个字节,每4个字节为一个单位。记为aa[1],aa[2],aa[3]。。。aa[n]。以此类推。

tem...[/QUOTE]

没听说过懂算法而不懂编程的,更多的是懂编程而不懂算法....请问楼主什么职业?
2011-3-28 12:17
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
8
#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
	HANDLE hFile = CreateFile(_T("aa.bin"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	
	if (INVALID_HANDLE_VALUE == hFile)
		return 0;

	DWORD hiSize;
	DWORD fileSize = GetFileSize(hFile, &hiSize);
	
	if (hiSize == 0 && fileSize < 0x1000)
		return 0;

	DWORD fileData[0x400];
	ReadFile(hFile, fileData, sizeof(fileData), &hiSize, NULL);
	CloseHandle(hFile);

	DWORD tempData = fileData[0];

	for (DWORD index = 1; index < 0x400; ++index) 
	{
		BYTE b = (BYTE)fileData[index];
		
		if (b <= 0x80)
			tempData -= fileData[index];
		else
			tempData += fileData[index];

    tempData ^= fileData[index];
	}

	printf("%X", tempData);


	return 0;
}


BTW: 把 KX 交出来。
2011-3-28 12:26
0
雪    币: 282
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=cntrump;941240]#include <windows.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
        HANDLE hFile = CreateFile(_T("aa.bin"), GENERIC_READ, FILE_SHARE_READ...[/QUOTE]

用VC6.0编译有6个错误啊。。
另外,怎么没有看到异或??
还有,fileData[25],这个25,好像不对吧??0x1000/0x4=0x400吧。。
2011-3-28 13:42
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=streamload;941274]用VC6.0编译有6个错误啊。。
另外,怎么没有看到异或??
还有,fileData[25],这个25,好像不对吧??0x1000/0x8=0x200=512吧。。[/QUOTE]

已经改过来了。
你再编译试试,如果再有错,把编译错误发出来。
2011-3-28 14:30
0
雪    币: 282
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
自己搞错了。。我再试试
2011-3-28 15:07
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
12
试试那么久?
不会跑路了吧?
2011-3-28 17:43
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
13
楼上,你的循环部分用取反再加,这样好像能快一些?
还有文件大小完全没必要关心,只要VirtualAlloc一块0x1000大的内存再ReadFile就行了,不足的地方全是0,不影响运算的吧?

附ASM(C/C++白痴撸过……)
xor edx,edx
lea esi,offset buffer
lodsd
mov ecx,eax
@1:
mov eax,[esi]
cmp cl,80h
ja @2
not eax
inc eax
@2:
add ecx,eax
xor ecx,[esi]
add esi,4
cmp esi,offset buffer+1000h
jbe @1
2011-3-28 18:50
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
14
文件没有 0x1000 字节, 还算个啥。。
2011-3-28 19:24
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
15
谁关心呢,简单又能用就好,反正你那个循环还不是一样算满1000h么。。。
2011-3-28 19:29
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
16
擦。我是读取了 0x1000 个字节进来的。肯定要算完了。
2011-3-28 19:33
0
雪    币: 282
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
请问用ASM如何读入文件??传递文件位置指针?
能否写个完整的代码?
谢谢
2011-3-28 20:52
0
雪    币: 282
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不好意思,下午临时有事,出去了。。
试了下,结果正确。。
不过,想请问下,加入读入文件后,要在VC内联ASM代码,怎样传递文件指针来用ASM源码计算?
2011-3-28 21:00
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
19
你没有看过我的代码?
我是直接读取 0x1000 字节, 然后就关闭文件了.读进来的数据都保存在内存中.
哪里还有文件指针.
2011-3-28 22:16
0
雪    币: 282
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我是想问,假如要那样操作,要怎么写代码。。不是基于你已经写好的代码。。。
2011-3-28 22:45
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
21
附加条件不理会。
10 kx 已经给你省了 90 ub 了。
2011-3-29 09:13
0
雪    币: 64
活跃值: (97)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
路过!!!!!!!!
2011-3-29 11:09
0
雪    币: 282
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
只是顺便问一下啊。。。眼里只有Kx。。。哎
2011-3-29 11:16
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
24
我的态度不好,见谅。
我想表达的意思是。如果还有其他问题,欢迎新开悬赏帖。
2011-4-1 15:49
0
游客
登录 | 注册 方可回帖
返回
//