鱼C论坛

 找回密码
 立即注册
查看: 2158|回复: 3

x

[复制链接]
发表于 2012-6-15 12:43:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Mr.Wǎng 于 2012-6-15 16:43 编辑

初学Win32汇编,调用api写了一个小东西,关键代码如下:
_EnableDebugPriv proc uses ebx
    LOCAL   @hToken
    LOCAL   @tkp:TOKEN_PRIVILEGES
    szText  szPrivilegeName, 'SeDebugPrivilege'
    
    LEA ebx, @hToken
    invoke GetCurrentProcess
    invoke OpenProcessToken, eax, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, ebx
    invoke LookupPrivilegeValue, NULL, addr szPrivilegeName, addr @tkp.Privileges[0].Luid
    
    mov @tkp.PrivilegeCount, 1
    mov @tkp.Privileges[0].Attributes, SE_PRIVILEGE_ENABLED

    invoke AdjustTokenPrivileges, @hToken, FALSE, addr @tkp, sizeof TOKEN_PRIVILEGES, NULL, NULL 
    invoke CloseHandle, @hToken
    
    ret
_EnableDebugPriv endp

_UpdateMemory proc
    
    invoke _EnableDebugPriv
    
    invoke FindWindow, offset szTargetClassName, offset szTargetWindowTitle
    .if eax == NULL    ;没有找到
        invoke MessageBox, 0, offset szNotFound, offset szCaption, MB_OK or MB_ICONWARNING
        invoke ExitProcess, 0
    .endif
    mov hWinTarget, eax
    
    invoke GetWindowThreadProcessId, hWinTarget, offset hProcessId
    
;    szText szFormatProcessId, 'the Tartget Process ID is : %d '
;    invoke wsprintf, offset cBuf, addr szFormatProcessId, hProcessId
;    invoke MessageBox, 0, offset cBuf, offset szCaption, MB_OK or MB_ICONWARNING
    
    invoke OpenProcess, PROCESS_ALL_ACCESS, FALSE, hProcessId

    .if !eax
        invoke GetLastError
        szText szFormatOpenProcess, 'Error of OpenProcess is : %d'
        invoke wsprintf, offset cBuf, addr szFormatOpenProcess, eax
        invoke MessageBox, 0, offset cBuf, offset szCaption, MB_OK or MB_ICONWARNING
        invoke ExitProcess, 0
    .endif
    mov hTargetProc, eax

    invoke WriteProcessMemory, hTargetProc, baseAddr, offset dwTime, sizeof dwTime, offset dwBytes
    
    .if !eax
        invoke GetLastError
        szText szWriteMemory, 'Error of WriteProcessMemory is %d :'
        invoke wsprintf, offset cBuf, addr szWriteMemory, eax
        invoke MessageBox, 0, offset cBuf, offset szCaption, MB_OK or MB_ICONWARNING
        invoke ExitProcess, 0
    .endif
    
    ret
_UpdateMemory endp
其中33、34、35三行让我很费解
注释掉,OpenProcess失败,错误码998
取消注释,OpenProcess就成功了
百度、Google一大圈子,没有答案,郁闷死了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-6-15 12:46:51 | 显示全部楼层
顶起来,求大虾们帮解决,求鱼哥关注
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-6-15 12:53:49 | 显示全部楼层
我擦,要沉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-6-15 15:36:27 | 显示全部楼层
果然沉了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 07:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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