代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
VB.Net
】
获得CPU ID 嵌入汇编
作者:
DDT
/ 发布于
2013/2/17
/
1088
VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 1965 ClientLeft = 60 ClientTop = 345 ClientWidth = 3105 LinkTopic = "Form1" ScaleHeight = 1965 ScaleWidth = 3105 StartUpPosition = 2 'Bildschirmmitte Begin VB.CommandButton Command1 Caption = "Get CPU Name" Height = 495 Left = 840 TabIndex = 0 Top = 315 Width = 1425 End Begin VB.Label Label2 Alignment = 2 'Zentriert AutoSize = -1 'True BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 0 Weight = 400 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 240 Left = 1515 TabIndex = 2 Top = 1065 Width = 60 End Begin VB.Label Label1 Alignment = 2 'Zentriert AutoSize = -1 'True BeginProperty Font Name = "Arial" Size = 12 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 1515 TabIndex = 1 Top = 1350 Width = 75 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single) Label1 = "" Label2 = "" End Sub Private Sub Command1_Click() Label1 = GetCpuName() & " CPU" Label2 = "You have a" & IIf(InStr("AEIOU", Left$(Label1, 1)), "n", "") End Sub module1.bas Option Explicit ' 'This shows how to incorporate machine code into VB ''''''''''''''''''''''''''''''''''''''''''''''''''' 'The example fills the array with a few machine instructions and then copies 'them to a procedure address. The modified procedure is then called thru 'CallWindowProc. The result of this specific machine code is your CPU Vendor Name. ' '########################################################################## 'Apparently it gets a Stack Pointer Error, but I don't know why; if anybody 'can fix that please let me know... UMGEDV@AOL.COM 'The Error is not present in the native compiled version; so I think it got 'something to do with the P-Code Calling Convention (strange though)... '########################################################################## ' 'Sub Dummy serves to reserve some space to copy the machine instructions into. ' ' 'Tested on Intel and AMD CPU's (uncompiled and compiled) ' ' Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long) Private x As Long Public Function GetCpuName() As String Dim MachineCode(0 To 35) As Byte Dim VarAddr As Long Dim FunctAddr As Long Dim EAX As Long Dim CPUName(1 To 12) As Byte 'set up machine code MachineCode(0) = &H55 'push ebp MachineCode(1) = &H8B 'move ebp,esp MachineCode(2) = &HEC MachineCode(3) = &H57 'push edi MachineCode(4) = &H52 'push edx MachineCode(5) = &H51 'push ecx MachineCode(6) = &H53 'push ebx MachineCode(7) = &H8B 'move eax,dword ptr [ebp+8] MachineCode(8) = &H45 MachineCode(9) = &H8 MachineCode(10) = &HF 'cpuid MachineCode(11) = &HA2 MachineCode(12) = &H8B 'mov edi,dword ptr [ebp+12] MachineCode(13) = &H7D MachineCode(14) = &HC MachineCode(15) = &H89 'move dword ptr [edi],ebx MachineCode(16) = &H1F MachineCode(17) = &H8B 'mov edi,dword ptr [ebp+16] MachineCode(18) = &H7D MachineCode(19) = &H10 MachineCode(20) = &H89 'move dword ptr [edi],ecx MachineCode(21) = &HF MachineCode(22) = &H8B 'mov edi,dword ptr [ebp+20] MachineCode(23) = &H7D MachineCode(24) = &H14 MachineCode(25) = &H89 'move dword ptr [edi],edx MachineCode(26) = &H17 MachineCode(27) = &H58 'pop ebx MachineCode(28) = &H59 'pop ecx MachineCode(29) = &H5A 'pop edx MachineCode(30) = &H55 'pop edi MachineCode(31) = &HC9 'leave MachineCode(32) = &HC2 'ret 16 I tried everything from 0 to 24 MachineCode(33) = &H10 ' but all produce the stack error MachineCode(34) = &H0 'tell cpuid what we want EAX = 0 'get address of Machine Code VarAddr = VarPtr(MachineCode(0)) 'get address of Sub Dummy FunctAddr = GetAddress(AddressOf Dummy) 'copy the Machine Code to where it can be called CopyMemory ByVal FunctAddr, ByVal VarAddr, 35 '35 bytes machine code 'call it On Error Resume Next 'apparently it gets a stack pointer error when in P-Code but i dont know why CallWindowProc FunctAddr, EAX, VarPtr(CPUName(1)), VarPtr(CPUName(9)), VarPtr(CPUName(5)) 'Debug.Print Err; Err.Description 'MsgBox Err & Err.Description On Error GoTo 0 GetCpuName = StrConv(CPUName(), vbUnicode) 'UnicodeName End Function Private Function GetAddress(Address As Long) As Long GetAddress = Address End Function Private Sub Dummy() 'the code below just reserves some space to copy the machine code into 'it is never executed x = 0 x = 1 x = 2 x = 3 x = 4 x = 5 x = 6 x = 7 x = 8 x = 9 x = 10 x = 0 x = 1 x = 2 x = 3 x = 4 x = 5 x = 6 x = 7 x = 8 x = 9 x = 10 End Sub
试试其它关键字
获得CPU
ID
同语言下
.
根据User Agent来判定操作系统与浏览器类型
.
将PPT内容导出为JPG图片
.
Java屏幕截取
.
发送邮件组件
.
子窗体在父窗体指定的控件中显示
.
取文件的大小
.
从某个目录中筛选文件
.
VB脚本调用exe应用程序并传递参数
.
图像格式转换工具
.
洗牌算法
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
DDT
贡献的其它代码
(
160
)
.
Oracle统计表的数据行和数据块信息
.
html标签闭合检测与修复
.
Powershell日期计算
.
Powershell的Base64编解码
.
Powershell并行循环
.
Powershell目录中搜索文本
.
Powershell枚举远程机器上的本地权限组
.
VBScript解析csv文件
.
快速排序之Powershell
.
批处理输出格式化时间字符串
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3