您现在的位置: 骇客基地 >> 黑客文章 >> 黑客攻防 >> 黑客编程 >> 正文

md5计算器 的代码修正
骇客基地 阅读: 时间:2008-3-22 7:18:39 来源:www.hookbase.com
  

网上有些MD5_CTX结构的定义应该是有问题的.

/* Data structure for MD5 (Message-Digest) computation */
typedef struct {
    ULONG i[2]; /* number of _bits_ handled mod 2^64 */
    ULONG buf[4]; /* scratch buffer */
    unsigned char in[64]; /* input buffer */
    unsigned char digest[16]; /* actual digest after MD5Final call */
} MD5_CTX;

有些又是:

typedef struct {
UINT4 state[4];
UINT4 count[2];
unsigned char buffer[64];
} MD5_CTX;

;md5 hash calc
.386
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\shell32.inc
include \masm32\include\advapi32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\advapi32.lib

WndProc  proto :DWORD, :DWORD, :DWORD, :DWORD


.const
IDI_SM           equ  1   ;图标
IDC_EDIT_TEXT           equ 1001
IDC_EDIT_128            equ 1002
IDC_EDIT_CHG            equ 1003
IDC_BUTTON_OK           equ 1004
IDC_OUTTYPE             equ 1005
IDC_OUTTYPE2            equ 1006

 

RGB MACRO red, green, blue
 xor eax, eax
 mov al, blue    ; blue
 rol eax, 8
 mov al, green   ; green
 rol eax, 8
 mov al, red     ; red
ENDM


MD5_CTX struct
state   dd 2 dup (?)
count   dd 4  dup (?)
digest  dw 16 dup (?)
buffer  dw 64 dup (?)

MD5_CTX ends

.data
szDlgName   db "md5hash_dialog", 0
hInstance   dd ?
advdll              db  "advapi32.dll",0
md5init             db 'MD5Init',0
md5update           db 'MD5Update',0
md5final            db 'MD5Final',0
format              db '%02X',0
format2             db '%02x',0
outtype             dd 1
.data?
string              db 256 dup(?)
contex              MD5_CTX <>
buffer              db 64 dup (?)
tempbuffer          db 64 dup (?)
.code
start:
 invoke GetModuleHandle, NULL
 mov hInstance, eax
 invoke DialogBoxParam, hInstance, offset szDlgName, 0, WndProc, 0
 invoke ExitProcess, eax

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
 local hBrush :dword
 local rect:RECT
 local LogBrush:LOGBRUSH
 
 .if uMsg == WM_CLOSE
  invoke EndDialog, hWnd, 0

 .elseif uMsg == WM_INITDIALOG
  invoke LoadIcon, hInstance, IDI_SM
  invoke SendMessage, hWnd, WM_SETICON, ICON_SMALL, eax
  invoke CheckDlgButton,hWnd,IDC_OUTTYPE,BST_CHECKED ;默认大写方式输出HASH
 .elseif uMsg == WM_CTLCOLORSTATIC
  RGB 180,100,100
  invoke SetBkColor,wParam,eax
  invoke GetStockObject,HOLLOW_BRUSH
  ret
 .elseif uMsg == WM_ERASEBKGND
  mov LogBrush.lbStyle,BS_SOLID
  RGB 180,100,100
  mov LogBrush.lbColor,eax
  invoke CreateBrushIndirect,addr LogBrush
  mov hBrush,eax
  invoke GetClientRect,hWnd,addr rect
  invoke FillRect,wParam,addr rect,hBrush 
  mov eax,TRUE
  ret 
 .elseif uMsg == WM_COMMAND
  mov eax, wParam
  mov edx, eax
  shr edx, 16
  movzx eax, ax
  .if edx == BN_CLICKED ;处理按键消息
   .if eax == IDC_BUTTON_OK ;生成 
    invoke GetDlgItemText, hWnd, IDC_EDIT_TEXT, offset string,255
                invoke LoadLibrary,offset advdll
                mov edi,eax
                invoke GetProcAddress,edi,offset md5init
    mov esi,eax
    push offset contex
    call esi


                invoke GetProcAddress,edi,offset md5update
                mov esi,eax
    
                invoke lstrlen,offset string
                push eax
                push offset string
                push offset contex
                call esi
               
                invoke GetProcAddress,edi,offset md5final
                mov esi,eax               
                push offset contex
                call esi
                mov esi,offset contex
                add esi,88d
                xor ebx,ebx
                .while ebx<16
                xor eax,eax
                movzx ax,byte ptr [esi]
                .if uttype == 1
                invoke wsprintf,offset buffer,offset format,ax ;大写
                .else
                invoke wsprintf,offset buffer,offset format2,ax ;小写
                .endif
               
                invoke lstrcat,offset tempbuffer,offset buffer
                inc esi
                inc ebx
                .endw
               
                invoke SetDlgItemText, hWnd, IDC_EDIT_128, offset tempbuffer
                mov esi,offset tempbuffer
                add esi,8
                mov edi,esi
                add edi,16
                xor eax,eax
                mov [edi],eax
       invoke SetDlgItemText, hWnd, IDC_EDIT_CHG,esi

       invoke RtlZeroMemory,offset tempbuffer,64
            .elseif eax == IDC_OUTTYPE
                mov outtype,1
            .elseif eax == IDC_OUTTYPE2
                mov outtype,0      
   .endif
  .endif ;end of bn_clicked

 .else
  mov eax, FALSE
  ret
 .endif
 mov eax, TRUE
 ret
WndProc endp
 
end start 

今天广告
参与评论:
注意事项:
【md5计算器 的代码修正】文章由骇客基地网上搜集,其立场行为并不代表本站。
如果您发现该文章若无意中侵犯到您的权利,请联系我们!
未经本站明确许可,任何网站不得非法盗链及抄袭本站资源;如引用页面,请注明来自本站,谢谢您的支持!
最近更新
最新推荐
     
 
黑客首页 | 服务指南 | 软件发布  | 关于我们 | 本站声明  | 隐私声明 | 诚征英才 | 网站地图 | 友情链接 |
 
 
中国·黑客·骇客·基地 请使用IE6.0版本, 分辩率1024×768进行浏览 www.hookbase.com 站长:利客 Email:hookbase@163.com
Copyright © 2004-2009 All Rights Reserved. 粤ICP备05000985号