找回密码
 加入
搜索
查看: 1383|回复: 6

管理员权限被盗用的问题

[复制链接]
发表于 2009-4-3 16:39:34 | 显示全部楼层 |阅读模式
Local $sUserName = "administrator"
Local $sPassword = "123456"

RunAs($sUserName, @ComputerName, $sPassword, 0, "D:\Program Files\Wopti\WoptiUtilities.exe")

以前为了限制管理员权限做的个启动的autoit,后面发现还是有点问题,如果把其他文件改成相同名字文件的话,那也等于用管理员运行了

不知道有没有什么简单的方法防止一下?

比如我想加些md5验证或者啥的?

[ 本帖最后由 liangxm 于 2009-4-7 15:02 编辑 ]
发表于 2009-4-3 17:32:42 | 显示全部楼层
对 ,用MD5对比这个文件,是最有效的办法了。
发表于 2009-4-3 23:25:31 | 显示全部楼层
获取  字节`  对比下`就好了` 这个最简单的了`          FileGetSize ( "文件名" )
发表于 2009-4-5 21:00:24 | 显示全部楼层
FileGetSize + FileGetTime
 楼主| 发表于 2009-4-7 10:46:39 | 显示全部楼层
3q~
FileGetSize可以满足要求

不过md5的有没有办法呢?
发表于 2009-4-7 13:00:35 | 显示全部楼层

用这个能够验证MD5


MsgBox(0,"c:\windows\explorer.exe",_GetMD5("c:\windows\explorer.exe"))

Func _GetMD5($_FILES)
if FileExists($_FILES) then
$iAlgID = 0x8003
$_FILES_Open=FileOpen($_FILES, 16)
$_FILES_Read=FileRead($_FILES_Open)
FileClose($_FILES)
$vData=$_FILES_read
Local $iLen = BinaryLen($vData), $hContext, $hHash, $aRet, $sRet = "", $iErr = 0, $tDat = DllStructCreate("byte[" & $iLen + 1 & "]"), $tBuf
DllStructSetData($tDat, 1, $vData)
$aRet = DllCall("advapi32.dll", 'int', 'CryptAcquireContext', 'ptr*', 0, 'ptr', 0, 'ptr', 0, 'dword', 1, 'dword', 0xF0000000)
If Not @error And $aRet[0] Then
$hContext = $aRet[1]
$aRet = DllCall("advapi32.dll", 'int', 'CryptCreateHash', 'ptr', $hContext, 'dword', $iAlgID, 'ptr', 0, 'dword', 0, 'ptr*', 0)
If $aRet[0] Then
$hHash = $aRet[5]
$aRet = DllCall("advapi32.dll", 'int', 'CryptHashData', 'ptr', $hHash, 'ptr', DllStructGetPtr($tDat), 'dword', $iLen, 'dword', 0)
If $aRet[0] Then
$aRet = DllCall("advapi32.dll", 'int', 'CryptGetHashParam', 'ptr', $hHash, 'dword', 2, 'ptr', 0, 'int*', 0, 'dword', 0)
$tBuf = DllStructCreate("byte[" & $aRet[4] & "]")
DllCall("advapi32.dll", 'int', 'CryptGetHashParam', 'ptr', $hHash, 'dword', 2, 'ptr', DllStructGetPtr($tBuf), 'int*', $aRet[4], 'dword', 0)
$sRet = Hex(DllStructGetData($tBuf, 1))
Else
$iErr = 3
EndIf
DllCall("advapi32.dll", 'int', 'CryptDestroyHash', 'ptr', $hHash)
Else
$iErr = 2
EndIf
DllCall("advapi32.dll", 'int', 'CryptReleaseContext', 'ptr', $hContext, 'dword', 0)
Else
$iErr = 1
EndIf
Return SetError($iErr, 0, $sRet)
endif
EndFunc 
 楼主| 发表于 2009-4-7 15:02:43 | 显示全部楼层
3q !
~~~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-6 06:57 , Processed in 0.070742 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表