;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 破解FoxMail密码
; by 无名, QQ:316050822,E-MAIL:cnchaosir@hotmail.com
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 本程序为行者孙的文章《破解FoxMail密码》VFP版本改写而成,思路归原作者
; 所有。引用时请保留! ;)
; 本程序为测试版本,使用时请在FoxMail安装目录下找到要破解的E-MAIL账户名
; 打开并将“POP3Password=”后的加密串放到szPwdStr处,并重新编译本程序。
; 我的汇编不太好,代码写的冗余,请高手帮助优化,不甚感激!
; 我很少用注释,若对大家理解本程序算法带来不便请见谅!:)
; 本代码仅供学习研究使用,若有违法行为与我无关。:)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff FoxMailPwd.Asm
; rc FoxMailPwd.rc
; Link /subsystem:windows FoxMailPwd.Asm FoxMailPwd.res
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include gdi32.inc
includelib gdi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
szPwdStr db 'A153E13AC17F8DD17BCF22F64DE872B667ABB89E66',0
szBuffer db 128 dup(?)
szBuffer1 db 128 dup(?)
szBuffer2 db 128 dup(?)
szCaption db '提示',0
szFormat db '解密成功!密码为:%s',0
dwSize dd ?
dbKey db 7Eh,64h,72h,61h,47h,6Fh,6Eh,7Eh
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
Begin:
pushad
invoke lstrlen,offset szPwdStr
push eax
pop dwSize
mov bl,2
div bl
mov ecx,eax
push ecx
lea esi,szPwdStr
lea edi,szBuffer
xor ebx,ebx
_LoopBegin:
mov ax,[esi]
xchg al,ah
cmp ah,39h
ja _Sub
sub ah,30h
_Continue: shl ah,4
cmp al,39h
ja _Sub1
sub al,30h
_Countinue1: add al,ah
xor ah,ah
mov [edi],al
add esi,2
inc edi
Loop short _LoopBegin
cmp ecx,0
je _Bye
_Sub: sub ah,37h
jmp short _Continue
_Sub1: sub al,37h
jmp short _Countinue1
;以上将ASCII码转为16进制数
;*****************************************************************************************
_Bye:
pop ecx
push ecx
lea esi,szBuffer
lea edi,szBuffer1
cld
rep movsb ;拷贝转换后的数据
;*****************************************************************************************
;以下为解密过程
;*****************************************************************************************
pop ecx
dec ecx
push ecx
xor ebx,ebx
lea esi,dbKey
lea edi,szBuffer
_Go: cmp ebx,8
jae @f
_Next: mov al,[esi]
xor al,[edi+1]
mov BYTE ptr [edi],al
inc esi
inc edi
inc ebx
loop _Go
cmp ecx,0
je _GetOut
@@:
sub ebx,8
lea esi,dbKey
add esi,ebx
jmp short _Next
_GetOut:
lea esi,szBuffer1
mov al,[esi]
xor al,90
mov [esi],al
pop ecx
xor eax,eax
lea esi,szBuffer1
lea edi,szBuffer
_LastLoop: mov al,[edi]
cmp al,[esi]
jb @f
sub al,[esi]
mov BYTE ptr [edi],al
inc esi
inc edi
loop _LastLoop
cmp ecx,0
je _Exit
@@:
add al,255
sub al,[esi]
mov BYTE ptr [edi],al
inc esi
inc edi
jmp _LastLoop
cmp ecx,0
je _Exit
;****************************************************************************************
_Exit:
invoke wsprintf,addr szBuffer2,addr szFormat,addr szBuffer
invoke MessageBox,NULL,addr szBuffer2,addr szCaption,MB_OK
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end Begin
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!