首页
社区
课程
招聘
[下载]发一个MD5静态库
发表于: 2009-3-20 00:56 5246

[下载]发一个MD5静态库

2009-3-20 00:56
5246
http://www.uushare.com/user/unwake/file/1401123
这个静态库是汇编写的。比较小巧吧。
lib为库文件
inc为ASM头文件
h为C/C++头文件
里面分别附了ASM和C/C++的例子。C/C++是命令行接收字符串进行MD5,ASM是打开文件进行MD5。
C/C++用法
#include<iostream.h>
#include<string.h>
#include"MD5Lib.h"

void main()
{

	char temp[17] ;
	cin>>temp;
	int len=strlen(temp);
MD5Init();
	MD5Update(temp,len);
	MD5Final(temp);
	cout<<temp;
	cin>>temp;
}

ASM用法
.386
.model flat, stdcall  ;32 bit memory model
option casemap :none  ;case sensitive

include windows.inc
include kernel32.inc
include user32.inc
include Comctl32.inc
include shell32.inc
include comdlg32.inc 
includelib comdlg32.lib
includelib kernel32.lib
includelib user32.lib
includelib Comctl32.lib
includelib shell32.lib
include MD5Lib.inc
includelib MD5Lib.lib


;#########################################################################

.data?

x db 33 dup(?)
hInstance			dd ?
buffer db 512 dup(?) 
hFile dd ? 
hMapping dd ? 
pMapping dd ?
ddFileSize dd ?

.data

dbAppName db "Unwake Stuido"
ofn OPENFILENAME <>
.code

start :

	invoke GetModuleHandle,NULL
	mov		hInstance,eax
mov ofn.lStructSize,SIZEOF ofn 
mov ofn.lpstrFile, OFFSET buffer 
mov ofn.nMaxFile,512 
mov ofn.Flags, OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_LONGNAMES or OFN_EXPLORER or OFN_HIDEREADONLY 
invoke GetOpenFileName, ADDR ofn 
.if eax==TRUE 
  invoke CreateFile, addr buffer, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL 
  .if eax!=INVALID_HANDLE_VALUE 
    mov hFile, eax 
    invoke CreateFileMapping, hFile, NULL, PAGE_READONLY,0,0,0 
    .if eax!=NULL 
  	  mov hMapping, eax 
      invoke MapViewOfFile,hMapping,FILE_MAP_READ,0,0,0 
      .if eax!=NULL 
        mov pMapping,eax
        invoke GetFileSize,hFile,0
        mov ddFileSize,eax
				call MD5Init
				invoke MD5Update,pMapping,ddFileSize
				invoke MD5Final,addr x
				invoke MessageBox,0,addr x,addr x,MB_OK
			.endif
		.endif
	.endif
.endif
	invoke ExitProcess,0

end start

注意,在用C/C++时,一定要在链接时指定LIB库文件,不然,会找不到链接符号。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
支持分享~这东西虽然相关资料巨多,但好用的代码和库不是很多
2009-3-20 07:18
0
雪    币: 419
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不错,感谢你的工作
2009-3-20 08:36
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
char temp[17] ;
	cin>>temp;
	int len=strlen(temp);
	MD5Init();
	MD5Update(temp,len);
	MD5Final(temp);
	cout<<temp;

貌似给的例子代码里面有buffer溢出呀
2009-3-20 15:22
0
雪    币: 440
活跃值: (87)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
5
char temp[17] ;

temp数组应该设大一些(至少33)。因为MD5Final(temp);会向temp写32byte数据。否则程序会出问题的。
2009-3-20 16:20
0
雪    币: 94
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=asdfslw;594201]char temp[17] ;

temp数组应该设大一些(至少33)。因为MD5Final(temp);会向temp写32byte数据。否则程序会出问题的。[/QUOTE]

用来演示用的,随便写了几句。呵呵。
2009-3-20 20:02
0
游客
登录 | 注册 方可回帖
返回
//