📄 nmjmdaima.txt
字号:
不知是哪个加密了工资表....用的就是纽曼加密程序
反正工地上的生活很无聊
我就去破看看..真的很简单.
;----------------rc fiel---只定义了一个图标
500 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "1.ico"
;----------------rc fiel end -------------
;------------------asm file--------------------------------
; Date : 2003.11.25
;程序说明:
; 汇编语言牛刀小试
; 针对1.1版本
; 本程序是破解纽曼加密程序.被加密过的文件会在文件的开头处写上 "纽曼加密"的
;字符串.文件的长度增加BB8H字.文件的偏移0AH处有一串数字,按字来计算,有N个,密
;码就有N-1个.
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include Comdlg32.inc
includelib Comdlg32.lib
.data
_len dd ? ;密码的长度
passTab db 7ah,68h,6fh,75h,78h,75h,6ah,69h,6eh,67h,\
7ah,68h,6fh,75h,78h,0h ;解密表
pwd db 16 dup(?) ;真密码
_addp db 16 dup(?) ;假密码
_lpFile dd ? ;文件位置指针
szBuff db 255 dup(?)
szNM db '纽曼加密',0
szCaption db '破解纽曼->程序设计:徐凡华',0
szN db '文件没有纽曼加密',0
szText db '密码的长度为%05x' , 0dh , 0ah , 0
_hin dd ? ;文件句柄
szFileName db MAX_PATH dup (?) ;打开文件的路径
.code
;======================子程序===================
; 判断文件纽曼加密密码
; 入口参数:文件句柄,密码长度,返回的正确密码地址
; 出口参数
_Creak proc uses ebx esi edi _filehind , leng
local x_t[16]:byte
invoke SetFilePointer , _filehind , 10h , 0 , FILE_BEGIN
invoke ReadFile , _filehind , offset _addp , leng , addr x_t , NULL
mov esi,offset _addp
mov edi,offset pwd
mov ecx,leng
push ebx
push edx
xor edx,edx
xor ebx,ebx
.while TRUE
mov bl, byte ptr [offset passTab + edx]
lodsb
xor al,bl
stosb
inc edx
dec ecx
jz @F
.endw
pop edx
pop ebx
@@:
pop edx
pop ebx
ret
_Creak endp
;==============================================
;======================子程序===================
; 判断文件有没有进行纽曼加密
; 入口参数:文件句柄
; 出口参数eax true 有 false 没有
; szNM是静态变量指向特征字符串
_ifile proc uses ebx esi edi _filehind : dword
local x_str[10] : byte
local x_strlen : dword
invoke SetFilePointer , _filehind , 0 , 0 , FILE_BEGIN
invoke ReadFile , _filehind , addr x_str , 8 , addr x_strlen , NULL
invoke lstrcmp , addr x_str , offset szNM
.if eax !=0
mov eax , FALSE
ret
.endif
mov eax , TRUE
ret
_ifile endp
;==============================================
;======================子程序===================
; 判断文件纽曼加密密码长度
; 入口参数:文件句柄
; 出口参数 eax 密码长度
_strlen proc uses ebx esi edi _filehind : dword
local x_str[1] : byte
local x_strlen : dword
local x_file_point : byte
mov x_file_point , 1fh
invoke SetFilePointer , _filehind , x_file_point , 0 , FILE_BEGIN
xor ebx , ebx
.while TRUE
invoke ReadFile , _filehind , addr x_str , 1 , addr x_strlen , NULL
dec x_file_point
invoke SetFilePointer , _hin , x_file_point , 0 , FILE_BEGIN
.break .if ( x_str != 00h)
inc ebx
.endw
mov eax , 0fh
sub eax , ebx
ret
_strlen endp
;==============================================
; 显示“打开文件”对话框
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_OpenFile proc
local @stOF:OPENFILENAME
invoke RtlZeroMemory,addr @stOF,sizeof @stOF
mov @stOF.lStructSize,sizeof @stOF
; push hWinMain
; pop @stOF.hwndOwner
; mov @stOF.lpstrFilter,offset szFilter
mov @stOF.lpstrFile,offset szFileName
mov @stOF.nMaxFile,MAX_PATH
mov @stOF.Flags,OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST
invoke GetOpenFileName,addr @stOF
ret
_OpenFile endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
invoke _OpenFile
test eax , eax
jz @F
invoke CreateFile , offset szFileName , GENERIC_READ,\
FILE_SHARE_READ,\
NULL , OPEN_EXISTING,\
FILE_ATTRIBUTE_NORMAL , NULL
.if eax == INVALID_HANDLE_VALUE
ret
.endif
mov _hin , eax ;_hin 文件句柄
invoke _ifile , _hin ;检测是不是有加密
.if !eax
invoke MessageBox,NULL,offset szN,offset szCaption,MB_OK
invoke ExitProcess,NULL
.endif
invoke _strlen , _hin ;得到密码的长度
mov _len , eax
invoke _Creak,_hin,_len
invoke MessageBox , NULL ,offset pwd,offset szCaption , MB_OK
invoke CloseHandle , _hin
@@:
invoke ExitProcess,NULL
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -