MASM32單詞跑馬燈免輸ID序號產生器:超級簡單 (6千字)
;軟體註冊演算法:
;1.(硬碟ID(Hex)+806H) xor 1E3733H,轉為10進位制=註冊ID;
;2.(111A7BH-(註冊ID mod 3E8H)) xor 註冊ID,轉為10進位制=序列號
;以下是MASM32序號產生器
;kg-pmd.asm==============================================
.386 ;程式碼型別?
.model flat,stdcall ;編譯模式?
option casemap:none ;大小寫敏感
include hd.h ;標頭檔案
_WinMain Proto :DWORD,:DWORD,:DWORD,:DWORD
Calculation Proto
.const
DLG_MAIN equ 1000 ;與資原始檔中的ID值定義要相符
IDC_UN equ 1001
IDC_SN equ 1002
ID_GEN equ 1003
ID_EXIT equ 1004
.data ;資料段定義,靜態變數
MsgCap db "單詞跑馬燈 Ver 1.0 序號產生器 by 5,555",0
MsgName db "請輸入您的機器碼!",0
hInstance dd 0
ID_Hex dd 0
UserLen dd 0
VName db 256 dup (0)
FSName db 256 dup (0)
Drive db "C:\",0
VID dd 0
.data? ;資料段定義,動態變數
UserID db 80 dup (?)
SN db 80 dup (?)
.code
start:
invoke GetModuleHandle,NULL ;取得應用程式的控制程式碼
mov hInstance,eax
invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _WinMain,NULL ;呼叫API函式顯示對話方塊,進入訊息迴圈(_WinMain函式處理這個迴圈),引數含義自己查
invoke ExitProcess,NULL ;退出訊息迴圈後,結束程式(返回NULL值?)
_WinMain proc uses ebx edi esi, \ ;過程用到的暫存器,編譯時自動PUSH&POP。
hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
;幾個系統引數
mov eax,wMsg
;取訊息
.if eax == WM_CLOSE
;處理關閉視窗、初始化視窗及視窗按鈕按下的動作,這裡只列了三類
invoke
EndDialog,hWnd,NULL
.elseif eax == WM_INITDIALOG
call GetID
;預先取得跑馬燈的使用者ID
invoke SetDlgItemText,
hWnd, IDC_UN, addr UserID ;顯示在對話方塊中的“機器碼”後
invoke SetWindowText,hWnd,ADDR
MsgCap ;將MsgCap字串寫到對話方塊標題欄上(原來MsgCap字串我是加密過的,用UEDIT不能改。這樣即使用exescope修改了資源中的標題欄,標題資訊也不會變:)
invoke SendDlgItemMessage,hWnd,IDC_SN,EM_SETREADONLY,TRUE,NULL
;傳送訊息使註冊碼框只讀
.elseif eax == WM_COMMAND
;處理命令
mov eax,wParam
.IF lParam!=0
;???
.if eax==ID_GEN
invoke GetDlgItemText, hWnd, IDC_UN, addr UserID, 80 ;從ID為IDC_UN(機器碼)的文字框中取得字串並放入UserID中
.if eax!=NULL
;如果並非沒有輸入,計算
mov UserLen,eax
invoke Calculation
invoke SetDlgItemText, hWnd, IDC_SN, addr SN
;顯示SN的內容到ID號IDC_SN的框中
.else
invoke MessageBox,NULL,addr MsgName,addr MsgCap,MB_OK
or MB_ICONEXCLAMATION
.endif
.elseif eax==ID_EXIT
invoke SendMessage,hWnd,WM_CLOSE,NULL,NULL
.endif
.ENDIF
.else
mov eax,FALSE
;如果沒有處理過訊息,返回False值(放入任務佇列,下次迴圈繼續處理?)
ret
.endif
mov eax,TRUE
;否則返回True
ret
_WinMain ENDP
Calculation Proc
pushad
;儲存所有的暫存器值,懶人的方法:)。以下就不用解釋了吧。
mov ecx,UserLen
lea ebp,UserID
call Dec2Hex
mov ID_Hex,eax
mov ebp,3e8h
cdq
div ebp
mov eax,111a7bh
sub eax,edx
xor eax,ID_Hex
lea ebp,SN
call Num2Dec
popad
ret
Calculation Endp
GetID Proc
pushad
invoke GetVolumeInformation,
addr Drive, addr VName, 255, addr VID, 0, 0, addr FSName, 255
mov eax,VID
add eax,806h
xor eax,1e3733h
mov ID_Hex,eax
lea ebp,UserID
call Num2Dec
popad
ret
GetID Endp
;===數字轉換成10進位制字串,對0也同樣適用
Num2Dec Proc uses ebx edx edi ;入口:eax:Num to convert, ebp-->buffer 出口:ecx:返回轉換後的ASC長度
xor edi,edi
mov ebx,10
@Num2Dec_Lop1:
cdq
div ebx
push edx
inc edi
test eax,eax
jnz @Num2Dec_Lop1
mov ecx,edi
@Num2Dec_Lop2:
pop eax
add al,'0'
mov byte ptr [ebp],al
inc ebp
dec edi
jnz @Num2Dec_Lop2
mov byte ptr [ebp],0 ;加上結尾的0
ret
Num2Dec Endp
;===10進位制字串轉換成16進位制數字,對0也同樣適用
Dec2Hex Proc uses ebx edx ecx edi ;入口:ecx:字串長度 ebp-->0結尾的10進位制字串
出口:eax:返回值
xor ebx,ebx
mov edi,1
@Dec2Hex_Lop_1:
xor eax,eax
mov al,[ebp+ecw-1]
sub al,'0'
imul edi
add ebx,eax
imul edi,10
loop @Dec2Hex_Lop_1
mov eax,ebx
ret
Dec2Hex Endp
End start
;kg-pmd.rc
#include <e:\masm32\include\resource.h>
#define DLG_MAIN 1000
#define IDC_UN 1001
#define IDC_SN 1002
#define ID_GEN 1003
#define ID_EXIT 1004
DLG_MAIN DIALOG 64,53,240,52
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "單詞跑馬燈 Ver 1.0 序號產生器 by 5,555"
FONT 9, "宋體"
{
DEFPUSHBUTTON "註冊", ID_GEN, 180, 8, 50, 14
PUSHBUTTON "退出", ID_EXIT, 180, 26, 50, 14
EDITTEXT IDC_UN, 52, 10, 100, 12, WS_BORDER | WS_TABSTOP
EDITTEXT IDC_SN, 52, 29, 100, 13, WS_BORDER | WS_TABSTOP
LTEXT "機器碼:", -1, 8, 12, 40, 10
LTEXT "註冊碼:", -1, 8, 30, 41, 9
}
;hd.h****************************************
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
include \masm32\include\comctl32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\shell32.inc
include \masm32\include\advapi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\comctl32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\advapi32.lib
相關文章
- HexDiff V2.51和它的序號產生器(MASM32) (6千字)2015-11-15ASM
- 豪傑超級解霸3000英雄版序號產生器(MASM32),比較老 (6千字)2015-11-15ASM
- 簡單實現跑馬燈案例2019-10-09
- 最簡單的跑馬燈程式2010-06-10
- Gif2Swf Ver 2.1 TC20序號產生器 && MASM32序號產生器 (4千字)2001-12-10ASM
- androidTextView實現簡單的跑馬燈效果2021-09-09AndroidTextView
- IrfanView 序號產生器分析(初級版)
(13千字)2015-11-15View
- 用程式碼簡單的實現跑馬燈效果2016-01-06
- winzip序號產生器 (1千字)2001-04-12
- SysSync Version 1.02簡單演算法分析+VB序號產生器原始碼 (8千字)2015-11-15演算法原始碼
- “我們都愛背單詞”簡易破解及序號產生器的寫法 (608字)2001-04-25
- 序號產生器制分析: (1千字)2001-11-19
- 輕鬆提取資源 v1.82 序號產生器 (MASM32)2015-11-15ASM
- winzip的通用序號產生器 (2千字)2001-12-10
- 序號產生器合集2024-03-17
- 美萍安全衛士V8.45序號產生器制作分析過程,及序號產生器! (11千字)2001-10-28
- 爭分奪秒背單詞 版本:V1.5.01.12.11序號產生器 (578字)2001-12-18
- URL Address Book V6.05簡單演算法分析+VB序號產生器原始碼 (10千字)2015-11-15演算法原始碼
- 結合 CSS3 transition transform 實現簡單的跑馬燈效果2018-02-06CSSS3ORM
- KEYGENNING4NEWBIES #7破解過程+序號產生器 (6千字)2001-08-21
- supercapture3.0的版序號產生器!
(4千字)2002-04-23APT
- 製作mIRC6.02序號產生器(給別人寫的初學者序號產生器教材) (14千字)2015-11-15
- Flutter 跑馬燈2019-02-12Flutter
- flutter跑馬燈2018-12-06Flutter
- 成語速查 v3.0-3.2破文加序號產生器原始碼,簡單-高手看到不要笑
(8千字)2003-01-22原始碼
- Advanced Emailer 2.1 簡單演算法分析+序號產生器原始碼(tc2)2015-11-15AI演算法原始碼
- 家庭銀行家
v2b53 破解、跟蹤和序號產生器(MASM32)2004-06-02ASM
- EmEditor V3.29和它的序號產生器 (12千字)2015-11-15
- 時間到了 v1.5 簡單註冊演算法分析
+ 序號產生器原始碼(tc2) (9千字)2003-04-12演算法原始碼
- 《硬碟清道夫》的序號產生器 一個極其簡單的軟體! (649字)2001-08-17硬碟
- Myeclipse 6.5 序號產生器2020-04-06Eclipse
- Swift跑馬燈效果2019-01-31Swift
- 超級公式計算器 V4.5x 演算法分析+序號產生器原始碼2015-11-15公式演算法原始碼
- HappyIcon序號產生器TC原始碼 (1千字)2001-04-08APP原始碼
- NetTalk破解與序號產生器(高手勿進) (10千字)2001-09-20
- 橋牌軟體Deep Finesse的序號產生器 (1千字)2015-11-15
- 分享一個navicat序號產生器2024-04-02
- NetTerm 4.2.c註冊過程分析及序號產生器制作SBS (6千字)2015-11-15