编译器是RADASM,思路就是用PrintWindow后台截图(由于masm32里的user32库文件没有PrintWindow的地址,所以手动加载了一下,这里还要谢谢论坛里帮助我的那些大牛,真的很感谢),图能截出来,尺寸也是窗口大小的尺寸,但就是只截了部分窗口的图,其他地方都是黑色的,部分代码如下:
_GameCtrl proc
local ClientRect:RECT
LOCAL @hDc
LOCAL @hBmp
LOCAL @hUser32
LOCAL @PrintWindow
;********************************************************************
;查找窗口
;********************************************************************
invoke FindWindow,NULL,offset szGameName
mov hClient,eax
.if eax != 0
;********************************************************************
;把窗口移出屏幕
;********************************************************************
invoke GetSystemMetrics,SM_CXSCREEN
mov SysSizeX,eax
invoke GetSystemMetrics,SM_CYSCREEN
mov SysSizeY,eax
invoke GetWindowRect,hClient,addr ClientRect
mov ebx,ClientRect.left
mov ClientRectX,ebx
mov ebx,ClientRect.top
mov ClientRectY,ebx
mov ebx,ClientRect.right
sub ebx,ClientRect.left
mov ClientRectW,ebx
mov ebx,ClientRect.bottom
sub ebx,ClientRect.top
mov ClientRectH,ebx
invoke SetWindowPos,hClient,NULL,SysSizeX,SysSizeY,0,0,SWP_NOSIZE or SWP_NOACTIVATE or SWP_SHOWWINDOW
;********************************************************************
;创建hDC并关联位图hDC
;********************************************************************
invoke GetWindowDC,hClient
mov hClientDc,eax
invoke CreateCompatibleDC,hClientDc
mov @hDc,eax
invoke CreateCompatibleBitmap,hClientDc,ClientRectW,ClientRectH
mov @hBmp,eax
invoke SelectObject,@hDc,@hBmp
;加载并调用PrintWindow
invoke LoadLibrary,offset szText ;szText='user32.dll',0
mov @hUser32,eax
invoke GetProcAddress,@hUser32,offset szText1 ;szText1='PrintWindow',0
mov @PrintWindow,eax
push PW_CLIENTONLY
push @hDc
push hClient
call @PrintWindow
;********************************************************************
;将窗口截图复制到剪切板
;********************************************************************
invoke OpenClipboard,NULL
invoke EmptyClipboard
invoke SetClipboardData,CF_BITMAP,@hBmp
invoke CloseClipboard
invoke DeleteDC,@hDc
invoke DeleteObject,@hBmp
invoke ReleaseDC,NULL,hClientDc
截出来的图如下:
这到底是为什么啊?困扰我好几天了,差了很多资料都不知道
[课程]Linux pwn 探索篇!