简介:
ESET NOD32 是世界排名第三的杀毒软件,其以轻快巧著称
下载地址 :http://www.skycn.com/soft/37962.html
这个小工具的作用是自动从网上ESET ID发布页获取最新ID,然后用ID到官方进行验证,验证可用就写入本地注册表来修改ESET的ID信息。
本程序涉及了wininet 函数库,AOGO的正则表达式的使用,托盘气泡提示,配置文件的读取等等,希望对大家有所帮助!
另外程序可能存在各种BUG,欢迎测试告知,谢谢!
本程序先验证电脑里的ID,无效就自动读取网上ID发布页下载ID,验证后就写入到注册表,如果写入失败就模拟键盘输入。
V4.1更新
1.直接读取网络配置页,外置N条线路,再不用担心ID发布页失效了;
2.优化代码,其他细节修改;
3.暂时不支持自我排除和有效期检测;



代码:
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Programmed by nohacks, nohacks@163.com
; Website: http://hi.baidu.com/nohacks
; Win32 ASM is Masm
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 版本信息
; Eset_Nohacks_AUTOID V4.1 - ESET ID自动获取填写工具(适用全部版本)
;
; 2010年 3 月 1 日
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat, stdcall ;32 bit memory model
option casemap :none ;case sensitive
include ESET_AUTOID.inc
;#########################################################################
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke InitCommonControls
invoke GetPrivateProfileString,addr Section,addr keyname,addr myecho,addr iecho ,size iecho ,addr ininame
;invoke lstrlen, addr iecho
;invoke CharUpperBuff,addr iecho ,eax
invoke lstrcmpi,addr iecho,CTEXT("1") ; 2,1,0 == 1,0,-1
mov @echo,eax
;invoke debugbox,CTEXT("status"),@echo
invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
invoke ExitProcess,0
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
LOCAL @lpType,@lpcdData
LOCAL hOpen,hOpenUrl,@pMemory
LOCAL dwSize,status
LOCAL @lpUser[20]:BYTE
LOCAL @lpPass[20]:BYTE
LOCAL @Pass[20]:BYTE
LOCAL @TEMP[260]:BYTE
LOCAL @InstallDir [256]:BYTE
LOCAL @buffer [260]:BYTE
LOCAL temp
push hWin
pop Winhwnd
mov eax,uMsg
.if eax==WM_INITDIALOG
.if @echo !=-1
invoke LoadIcon,hInstance,1
mov hwnd,eax
mov note.cbSize,sizeof mNOTIFYICONDATA
push hWin
pop note.hwnd
mov note.uID,IDI_TRAY
mov note.uFlags,NIF_ICON+NIF_MESSAGE+NIF_TIP
mov note.uCallbackMessage,WM_SHELLNOTIFY
push hwnd
pop note.hIcon
invoke lstrcpy,addr note.szTip,CTEXT("ESET NOD32 ID自动升级工具")
invoke Shell_NotifyIcon,NIM_ADD,addr note
.endif
; 开始读注册表
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE, addr RegEset30,\
NULL, KEY_ALL_ACCESS,ADDR @hKey
.if eax != ERROR_SUCCESS
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE, addr RegEset27,\
NULL, KEY_ALL_ACCESS,ADDR @hKey
.if eax != ERROR_SUCCESS
invoke MessageBox,NULL,CTEXT("本机没有安装ESET NOD32 "),CTEXT("提示"),MB_ICONERROR+MB_OK
jmp exit
.endif
.endif
;读取ESET本地用户名
invoke RtlZeroMemory ,addr @lpUser,sizeof @lpUser
invoke RegQueryValueEx,@hKey,CTEXT("username"), 0,ADDR @lpType,NULL,addr @lpcdData
invoke RegQueryValueEx,@hKey,CTEXT("username"), 0,ADDR @lpType,ADDR @lpUser,addr @lpcdData
.if @lpcdData < 12
jmp IdNull
.endif
;读取ESET本地密码
invoke RtlZeroMemory ,addr @lpPass,sizeof @lpPass
invoke RegQueryValueEx,@hKey,CTEXT("password"), 0,ADDR @lpType,NULL,addr @lpcdData
invoke RegQueryValueEx,@hKey,CTEXT("password"),0,ADDR @lpType,ADDR @lpPass,addr @lpcdData
.if @lpcdData < 10
jmp IdNull
.endif
;解密
invoke RtlZeroMemory ,addr @Pass,11
invoke DeCode,addr @lpPass,addr @Pass
invoke wsprintf,addr @TEMP,addr UserPass ,addr @lpUser,addr @Pass
;输出提示
invoke _ProcTaskQiPao,hWin,0,WM_NOTIFYICON ,hwnd,ADDR @TEMP,CTEXT("正在验证ESET本地ID")
;联网验证ID
invoke TestID ,addr @lpUser,addr @Pass
;invoke debugbox,CTEXT("status"),eax
.if eax
invoke _ProcTaskQiPao,hWin,0,WM_NOTIFYICON ,hwnd,ADDR @TEMP,CTEXT("本机ESET ID有效!")
invoke Sleep,500
jmp exit
.elseif eax==-1
invoke _ProcTaskQiPao,Winhwnd,0,WM_NOTIFYICON ,hwnd,ADDR @TEMP,CTEXT("连接官网时发生错误,请检查网络!")
invoke Sleep,500
jmp exit
.else
IdNull:
invoke _ProcTaskQiPao,hWin,0,WM_NOTIFYICON ,hwnd,CTEXT("http://hi.baidu.com/..."),CTEXT("本机ESET ID无效,读取数据中...")
invoke Sleep,100
;获取有效ID
invoke RtlZeroMemory ,addr @lpUser,sizeof @lpUser
invoke RtlZeroMemory ,addr @lpPass,sizeof @lpPass
invoke GetAllEsetid ,addr myurl,addr Express,addr @lpUser,addr @lpPass,10
.if eax==TRUE
invoke wsprintf,addr @TEMP,addr UserPass ,addr @lpUser,addr @lpPass
;写到注册表用户名
invoke lstrlen, addr @lpUser
invoke RegSetValueEx,@hKey,CTEXT("username"),0,REG_SZ,addr @lpUser,eax
.if eax==ERROR_SUCCESS
;加密写入密码
invoke EnCode,addr @lpPass,addr @Pass
invoke RegSetValueEx,@hKey,CTEXT("password"), 0,REG_BINARY,addr @Pass , 20
invoke wsprintf,addr @TEMP,addr UserPass ,addr @lpUser,addr @lpPass
;输出成功提示
invoke _ProcTaskQiPao,Winhwnd,0,WM_NOTIFYICON ,hwnd,ADDR @TEMP,CTEXT("有效ID已存入电脑!")
invoke Sleep,100
jmp exit
.else
; 读注册表安装目录
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE, addr InstallDir,\
NULL, KEY_ALL_ACCESS,ADDR @hKey
;读取ESET安装目录
invoke RtlZeroMemory ,addr @InstallDir,sizeof @InstallDir
invoke RegQueryValueEx,@hKey,CTEXT("InstallDir"), 0,ADDR @lpType,NULL,addr @lpcdData
invoke RegQueryValueEx,@hKey,CTEXT("InstallDir"), 0,ADDR @lpType,ADDR @InstallDir,addr @lpcdData
invoke wsprintf,addr @buffer ,addr egui ,addr @InstallDir
invoke WinExec,addr @buffer ,SW_SHOW
invoke _ProcTaskQiPao,Winhwnd,0,WM_NOTIFYICON ,hwnd,ADDR @TEMP,CTEXT("正在模拟写入...")
invoke Sleep,500
;发送CTRL+U
invoke keybd_event,VK_CONTROL, 0, 0 ,0
invoke keybd_event,VK_U,0, 0 ,0
invoke keybd_event,VK_U, 0,KEYEVENTF_KEYUP,0
invoke keybd_event,VK_CONTROL, 0, KEYEVENTF_KEYUP,0
;拷贝用户名到剪贴板
invoke SetClipboardText ,addr @lpUser
invoke Sleep,100
;发送CTRL+V
invoke keybd_event,VK_CONTROL, 0, 0 ,0
invoke keybd_event,VK_V,0, 0 ,0
invoke keybd_event,VK_V, 0, KEYEVENTF_KEYUP,0
invoke keybd_event,VK_CONTROL, 0, KEYEVENTF_KEYUP,0
invoke Sleep,100
; 发送TAB
invoke keybd_event,VK_TAB, 0, 0 ,0
invoke keybd_event,VK_TAB, 0, KEYEVENTF_KEYUP,0
;//拷贝密码到剪贴板
; invoke debugbox,addr @lpPass,0
;jmp exit
invoke SetClipboardText,addr @lpPass
invoke Sleep,100
;//发送CTRL+V
invoke keybd_event,VK_CONTROL, 0, 0 ,0
invoke keybd_event,VK_V,0, 0 ,0
invoke keybd_event,VK_V, 0, KEYEVENTF_KEYUP,0
invoke keybd_event,VK_CONTROL, 0, KEYEVENTF_KEYUP,0
invoke Sleep,100
;// 发送回车键
invoke keybd_event,VK_RETURN, 0,0 ,0
invoke keybd_event,VK_RETURN, 0, KEYEVENTF_KEYUP,0
invoke Sleep,200
;//发送ALT+空格键+H
invoke keybd_event,VK_MENU, 0, 0 ,0
invoke keybd_event,VK_SPACE,0, 0 ,0
invoke keybd_event,VK_H,0, 0 ,0
invoke keybd_event,VK_H, 0, KEYEVENTF_KEYUP,0
invoke keybd_event,VK_SPACE, 0, KEYEVENTF_KEYUP,0
invoke keybd_event,VK_MENU, 0, KEYEVENTF_KEYUP,0
invoke _ProcTaskQiPao,Winhwnd,0,WM_NOTIFYICON ,hwnd,ADDR @TEMP,CTEXT("写入完毕!")
invoke Sleep,500
jmp exit
.endif
.else
invoke _ProcTaskQiPao,Winhwnd,0,WM_NOTIFYICON ,hwnd,ADDR @TEMP,CTEXT("获取ID错误,请检查网络!")
invoke Sleep,500
jmp exit
.endif
.endif
.elseif eax==WM_COMMAND
.elseif eax==WM_CLOSE
exit:
.if @hKey
invoke RegCloseKey,@hKey
.endif
invoke Shell_NotifyIcon,NIM_DELETE,addr note
invoke EndDialog,hWin,0
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
end start
停止更新,请支持国产软件, 比如微点,金山,360等!
源码下载:(Radasm+MASM)
ESET_AUTOID.rar