神州数码解密程序32位汇编版

原创 2006年06月06日 16:47:00

out33.asm

;triones produce it form 12:04 2006-1-10 to 11:30 2006-1-12 Windows XP SP1.
;作为对32位汇编熟悉的一个测试。
;具体版权声明与使用说明请参见"使用说明",欢迎交流与探讨.

.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
include		shell32.inc
includelib	shell32.lib

ICO_MAIN	equ	1000
DLG_MAIN	equ	1000
IDM_MAIN	equ	4210

IDC_INF		equ	1001
IDC_Load	equ	1002
IDC_Pass	equ	1003
IDC_Password	equ	1004
IDC_OPEN	equ	1005
IDC_copyright	equ	1006
IDC_help 	equ	1007
IDC_EXIT	equ	1100


.data?
hInstance	dd	?
hWinMain	dd	?
szProfileName	db	MAX_PATH dup (?)	;主要路径
szPass		db	100 dup (?)
lpInfo		dd	?				;A Piont to pinot some output infomation
icheck		dd	?

.const
theKey		db	0Bh,1Eh,49h,60h,0Fh,78h,27h,5Eh,25h,02h,77h,2Ah,55h,20h,35h,7Ah,1Bh,0Eh,59h,47h
szCopyRight	db	10,"江西理工大学 环境032班  ",10,10,9,"章文雄",10,10,"  版权所有  2006(c)",0
szCRCaption	db	"版权声明",0
szHelp		db	22h,"使用说明",22h,"文件丢失!",0
szHelpName	db	"使用说明.txt",0
szWarning	db	"出错:",10,10,"-不存在密文",10,"-非神州数码INI文件",0
szhaha		db	"搞笑呢大哥,这哪个牛人的密码哦,谢绝程序测试 -_|||",0
szFilter	db	'*.ini',0,'*.ini',0,'所有文件',0,'*.*',0,0
szALoad		db	'C:/Progra~1/Digita~1/Digial~1'
szFileName	db	'/dot1xS~1.ini',0		;文件名修改这里
szSec		db	'登录参数',0		;小节名修改这里
szKey		db	'Password',0		;键名修改这里
FindInOwn	db	'-当前目录Find,解密结果:',0
FindInLoad	db	'-安装文件夹Find,解密结果:',0
FindInNone	db	'-未找到或密码未保存,请指定或输入密文:',0
FindInput	db	'-以下即输入密文的解密结果:',0
FindInpoint	db	'-指定文件分析结果:',0

.code


;主要的解密操作过程
Out33		proc
	
	pushad
	
	lea esi,offset szPass
	lea ebx,offset theKey
	mov edi,esi
	xor eax,eax
	xor ecx,ecx
	cld
	;主限制了16位的密码解密,如果要增加长度,可以把32改大点喽.
	.while ecx < 32
		lodsb
		.break .if al==0
		inc ecx
		mov	ah,al
		lodsb
		.break .if al==0
		inc ecx
		and	ax,4f4fh
		.if al > 40h
			sub	al,37h
		.endif
		.if ah > 40h
			sub	ah,37h
		.endif
		shl ah,4
		add al,ah
		mov ah,[ebx]
		xor al,ah
		.if (al < 21h)||(al > 7Eh)
			invoke	MessageBox,hWinMain,addr szhaha,NULL,MB_OK or MB_ICONWARNING
			jmp	@F
		.endif
		stosb
		inc ebx
	.endw
	xor al,al
	stosb
	invoke	SetDlgItemText,hWinMain,IDC_Password,addr szPass
@@:	
	popad	
	ret

Out33 endp

GetInput	proc
	
	pushad
	invoke	GetDlgItemText,hWinMain,IDC_Pass,addr szPass,128
	invoke	SetDlgItemText,hWinMain,IDC_INF,addr FindInput
	invoke	Out33
	popad	
	ret

GetInput endp


;从INI文件中取得密文
GetPass	proc

	local	@szBuffer[100]:byte
	pushad
	
	invoke	GetPrivateProfileString,addr szSec,addr szKey,NULL,addr szPass,99,addr szProfileName
	.if	eax == 0
		mov	eax,icheck
		.if	eax == 0
			invoke	GetPrivateProfileString,addr szSec,addr szKey,NULL,addr szPass,99,addr szALoad
			.if	eax == 0
				invoke	SetDlgItemText,hWinMain,IDC_INF,addr FindInNone
				jmp	@F
			.endif
			invoke	SetDlgItemText,hWinMain,IDC_Load,addr szALoad
			mov	lpInfo,offset	FindInLoad
			jmp	secYes
		.endif
		invoke	MessageBox,hWinMain,addr szWarning,NULL,MB_OK or MB_ICONWARNING
		jmp	@F
	.endif
	invoke	SetDlgItemText,hWinMain,IDC_Load,addr szProfileName
secYes:
	invoke	SetDlgItemText,hWinMain,IDC_INF,lpInfo
	invoke	SetDlgItemText,hWinMain,IDC_Pass,addr szPass
	invoke Out33
@@:
	popad
	ret

GetPass	endp

StratGet proc

	pushad
	invoke	GetCurrentDirectory,MAX_PATH,addr szProfileName
	mov	esi,offset szProfileName
	invoke	lstrlen,esi
	mov	ecx,offset szFileName
	.if	byte ptr [esi+eax-1] == '/'
		inc	ecx
	.endif
	invoke	lstrcat,esi,ecx
	mov	icheck,0
	invoke	GetPass
	popad
	ret
	
StratGet endp

GetFileName	proc

	local	stFile:OPENFILENAME
	
	pushad
	invoke	RtlZeroMemory,addr stFile,sizeof stFile
	mov	stFile.lStructSize,sizeof stFile
	push	hWinMain
	pop	stFile.hwndOwner
	mov	stFile.lpstrFilter,offset szFilter
	mov	stFile.lpstrFile,offset szProfileName	;文件的全路径放在这里喽
	mov	stFile.nMaxFile,MAX_PATH
	mov	stFile.Flags,OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST
	invoke	GetOpenFileName,addr stFile
	.if	eax != 0
		mov	lpInfo,offset	FindInpoint
		invoke	GetPass
	.endif
	popad
	ret

GetFileName endp

DlgMain	proc	hWnd,wMsg,wParam,lParam

	local	@szBuffer[256]:byte
	
	pushad
	mov	eax,wMsg
	
	.if	eax ==	WM_CLOSE
		invoke	EndDialog,hWnd,NULL
		
	.elseif	eax ==	WM_INITDIALOG
			push	hWnd
			pop	hWinMain
			invoke	LoadIcon,hInstance,ICO_MAIN
			invoke	SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
			xor ecx,ecx
			mov	icheck,ecx		;set the icheck to 0 and check two path have the ini.
			inc	ecx
			mov	lpInfo,offset	FindInOwn
			invoke	StratGet
			mov	icheck,ecx
	.elseif	eax ==	WM_COMMAND
		mov	eax,wParam
		.if	ax ==	IDOK
			invoke	GetInput
		.elseif ax == IDC_copyright
			invoke	MessageBox,hWnd,addr szCopyRight,addr szCRCaption,MB_OK or MB_ICONINFORMATION
		.elseif	ax == IDC_help
			invoke	ShellExecute,0,0,addr szHelpName,0,0,SW_SHOW
			.if	eax < 31
				invoke	MessageBox,hWnd,addr szHelp,NULL,MB_OK or MB_ICONWARNING
			.endif
		.elseif	ax == IDC_OPEN
			invoke	GetFileName
		.elseif	ax == IDC_EXIT
			invoke	EndDialog,hWnd,NULL
		.endif
	.else
		mov	eax,FALSE
		ret
	.endif
	
	mov	eax,TRUE
	popad
	ret
DlgMain	endp


start:
		invoke	GetModuleHandle,NULL
		mov	hInstance,eax
		invoke	DialogBoxParam,eax,DLG_MAIN,NULL,offset DlgMain,NULL
		invoke	ExitProcess,NULL

		end	start


out22.rc
#include  "D:/masm32/include/resource.h"

#define	ICO_MAIN	1000
#define	DLG_MAIN	1000

#define	IDM_MAIN	4210

#define	IDC_INF		1001
#define	IDC_Load	1002
#define	IDC_Pass	1003
#define	IDC_Password	1004
#define IDC_OPEN	1005
#define IDC_copyright	1006
#define IDC_help 	1007
#define	IDC_EXIT	1100


ICO_MAIN	ICON		"cm02_triones.ico"

DLG_MAIN DIALOG 240,200,200,100
MENU	IDM_MAIN
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | DS_3DLOOK
CAPTION "OUT3.3 (Win32ASM ver 0.2)"
FONT 9, "宋体"
{
 CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE,0,0,200,1
 GROUPBOX "神州数码解密程序32位汇编版",-1,2,5,196,92
 
 EDITTEXT IDC_Password,28,63,70,11,ES_READONLY
 
 EDITTEXT IDC_INF,4,15,192,12, ES_AUTOHSCROLL | ES_READONLY
 RTEXT "路径:",-1,4,36,25,10
 EDITTEXT IDC_Load,28,34,168,11, ES_AUTOHSCROLL | ES_READONLY
 RTEXT "密文:", -1,4,51,25,10
 EDITTEXT IDC_Pass, 28,49, 140, 11
 RTEXT "密码:", -1,4,64, 25, 10

 PUSHBUTTON	"解密(&J)",IDOK,144,63,50,14
 PUSHBUTTON	"打开文件(&O)",IDC_OPEN,5,80,50,14
 PUSHBUTTON	"关于(&A)",IDC_copyright,60,80,50,14
 PUSHBUTTON	"关闭(&X)",IDC_EXIT,144,80,50,14
 
}

IDM_MAIN	MENU	discardable
{
 popup	"操作(&F)"
	{
	 menuitem	"打开(&O).../tAlt+O",IDC_OPEN
	 menuitem	"解密(&J)/tAlt+J",IDOK
	 menuitem	separator
	 menuitem	"退出(&X)",IDC_EXIT
	}
 popup	"帮助(&H)"
	{
	 menuitem	"帮助(&H)",IDC_help
	 menuitem	separator
	 menuitem	"关于(&A)",IDC_copyright
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

"hello,world!"win32汇编小程序

  ...
  • vargas
  • vargas
  • 2006年06月18日 01:24
  • 1382

64位Linux环境 编译32位汇编程序(外链C库函数)

使用的是gas 命令如下 : as --32 -o helloworld.o helloworld.s ld -m elf_i386 -dynamic-linker /lib/i386-linux-...
  • friendbkf
  • friendbkf
  • 2016年10月21日 18:26
  • 829

32位汇编写简单加减乘除计算器

使用Visual Studio 2015开发,引用到Intel汇编的Irvine32头文件。
  • qq_35049196
  • qq_35049196
  • 2017年07月08日 09:32
  • 494

32位汇编语言学习笔记(1)--简单示例

 程序计数器,IA32指令集中通常称为PC,用%eip表示,指示即将执行的下一条指令在存储器中的地址。 /* $begin sum-c */ int accum ...
  • swordmanwk
  • swordmanwk
  • 2014年11月15日 17:24
  • 1420

64位Linux系统编译32位汇编程序

64位Linux系统编译32位汇编程序的时候需要仿真32位系统的需求,发现使用-m32参数后,编译提示错误,如下: /usr/bin/ld: 未知的仿真模式: 32 支持的仿真: elf_x86...
  • Stephan14
  • Stephan14
  • 2015年07月18日 17:17
  • 1137

64位Centos7上汇编运行32位程序

64位Centos7上汇编运行32位程序首先贴上源代码。 .ld-linux.so.2是动态加载器用来查找libc.so的...
  • liushihuidfg
  • liushihuidfg
  • 2015年06月10日 15:17
  • 1892

16位汇编 我校神州数码客户端解密

;本程序于2005-6-6 PM8由triones开始写。于2005-6-7 PM1完成。;triones produce in win2000pro 2005-6-6.;数据段DSEG    SEG...
  • pig4210
  • pig4210
  • 2006年03月18日 17:54
  • 1575

VS2015中运行32位汇编程序

【前言】   这学期开汇编语言课。作为培养方案中的一门选修课,与课组中教微机原理、嵌入式的同事商量,决定这门课就以8086为载体,带大家入门即可。不过,在课程结束之前,也向同学们做了拓展。   本...
  • sxhelijian
  • sxhelijian
  • 2017年07月08日 22:37
  • 2337

windows下32位汇编语言学习笔记

 windows下32位汇编语言学习笔记 第一章第一章 背景知识80x86处理器的存储器4个数据寄存器EAX,EBX,ECX,EDX EAX寄存器所有API函数的返回值都保存在EAX里,注意是返回值,...
  • lqk1985
  • lqk1985
  • 2009年11月28日 15:10
  • 9439

linux系统调用64位汇编与32位汇编不同及兼容

一、不同 1.系统调用号不同。比如x86中sys_write是4,sys_exit是1;而x86_64中sys_write是1, sys_exit是60。linux系统调用号实际上定义在/usr/in...
  • zyx4843
  • zyx4843
  • 2016年03月30日 11:34
  • 1305
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:神州数码解密程序32位汇编版
举报原因:
原因补充:

(最多只允许输入30个字)