易语言扫描病毒取特征码
系统结构:loading,检测壳子,取病毒名,Virus_signature,汇编_取字节集长度,读共享,读字节集,取空白字节集_,ASM_MD5,返回字符串到MD5文本,RtlMoveMemory_IMAGE_DOS_HEADER_1,RtlMoveMemory_IMAGE_NT_HEADERS_1,RtlMoveMemory_IMAGE_SECTION_HEADER_1,LocalSize,RtlMoveMemory_IMAGE_DOS_HEADER,RtlMoveMemory_IMAGE_NT_HEADERS,读入缓存_,打开文件_,取文件尺寸_,打开文件映射对象_,映射文件对象_,解除文件映射_,HeapAlloc,GetProcessHeap,子程序1,打开文件,生成空文件,生成重复字节文件,移到文件首,移到文件尾,移动读写位置,取读写位置,关闭文件,取文件长度,写出字节集,是否在文件尾,取错误信息,读入字节集,读入2M字节集,清除文件缓冲区,读入文本,写出文本,写文本行,读入一行,插入字节集,取文件号,取映射对象名,打开文件,初始化_从文件创建,初始化_从内存创建,从文件号创建,初始化_从映射对象名创建,关闭,关闭对象,取首地址,取读写位置,移动读写位置,移到首位置,移到尾位置,读出字节集,读出文本,读出字节,读出短整数,读出整数,读出长整数,读出小数,读出双精度小数,读出逻辑值,读出日期时间型,写入字节集,写入文本,写入小数,写入双精度小数,写入字节,写入短整数,写入整数,写入长整数,写入日期时间,写入逻辑,取错误信息,插入字节集,插入文本,插入小数,插入双精度小数,插入字节,插入短整数,插入整数,插入长整数,插入日期时间,插入逻辑,取文件映射尺寸,寻找字节集,中止寻找字节集,取寻找字节集进度,删除数据,取文件映射对象名,WriteFile,CloseHandle,GetFileSize,GetLastError,FormatMessage,ReadFile,CreateFile,SetFilePointer,LockFile,UnlockFile,FlushFileBuffers,FlushViewOfFile,取文件路径目录_,CreateFileMapping1,CreateFileMapping2,MapViewOfFile,UnmapViewOfFile,GlobalLock,GlobalHandle,OpenFileMapping,GlobalSize,CopyMemory,CopyMemory_s,CopyMemory_x,CopyMemory_sj,CopyMemory_d,CopyMemory_z,CopyMemory_c,CopyMemory_r,MoveMemory,VirtualQuery,
======程序集1
| |
| |------ loading
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ 检测壳子
| |
| |------ _取字节集指针
| |
| |------ 取病毒名
| |
| |------ Virus_signature
| |
| |------ 汇编_取字节集长度
| |
| |
======程序集2
| |
| |------ 读共享
| |
| |------ 读字节集
| |
| |------ 取空白字节集_
| |
| |------ ASM_MD5
| |
| |------ 返回字符串到MD5文本
| |
| |
======调用的Dll
| |
| |---[dll]------ RtlMoveMemory_IMAGE_DOS_HEADER_1
| |
| |---[dll]------ RtlMoveMemory_IMAGE_NT_HEADERS_1
| |
| |---[dll]------ RtlMoveMemory_IMAGE_SECTION_HEADER_1
| |
| |---[dll]------ LocalSize
| |
| |---[dll]------ RtlMoveMemory_IMAGE_DOS_HEADER
| |
| |---[dll]------ RtlMoveMemory_IMAGE_NT_HEADERS
| |
| |---[dll]------ _打开当前进程
| |
| |---[dll]------ _文件是否存在
| |
| |---[dll]------ _关闭对象
| |
| |---[dll]------ 读入缓存_
| |
| |---[dll]------ 打开文件_
| |
| |---[dll]------ 取文件尺寸_
| |
| |---[dll]------ 打开文件映射对象_
| |
| |---[dll]------ 映射文件对象_
| |
| |---[dll]------ 解除文件映射_
| |
| |---[dll]------ _指针_读字节集
| |
| |---[dll]------ HeapAlloc
| |
| |---[dll]------ GetProcessHeap
| |
| |---[dll]------ _取自进程ID
======程序集1
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ 子程序1
| |
| |
======文件读写
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 打开文件
| |
| |------ 生成空文件
| |
| |------ 生成重复字节文件
| |
| |------ 移到文件首
| |
| |------ 移到文件尾
| |
| |------ 移动读写位置
| |
| |------ 取读写位置
| |
| |------ 关闭文件
| |
| |------ 取文件长度
| |
| |------ 写出字节集
| |
| |------ 是否在文件尾
| |
| |------ 取错误信息
| |
| |------ 读入字节集
| |
| |------ 读入2M字节集
| |
| |------ 清除文件缓冲区
| |
| |------ 读入文本
| |
| |------ 写出文本
| |
| |------ 写文本行
| |
| |------ 读入一行
| |
| |------ 插入字节集
| |
| |------ 取文件号
| |
| |
======文件映射
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 取映射对象名
| |
| |------ 打开文件
| |
| |------ 初始化_从文件创建
| |
| |------ 初始化_从内存创建
| |
| |------ 从文件号创建
| |
| |------ 初始化_从映射对象名创建
| |
| |------ 关闭
| |
| |------ 关闭对象
| |
| |------ 取首地址
| |
| |------ 取读写位置
| |
| |------ 移动读写位置
| |
| |------ 移到首位置
| |
| |------ 移到尾位置
| |
| |------ 读出字节集
| |
| |------ 读出文本
| |
| |------ 读出字节
| |
| |------ 读出短整数
| |
| |------ 读出整数
| |
| |------ 读出长整数
| |
| |------ 读出小数
| |
| |------ 读出双精度小数
| |
| |------ 读出逻辑值
| |
| |------ 读出日期时间型
| |
| |------ 写入字节集
| |
| |------ 写入文本
| |
| |------ 写入小数
| |
| |------ 写入双精度小数
| |
| |------ 写入字节
| |
| |------ 写入短整数
| |
| |------ 写入整数
| |
| |------ 写入长整数
| |
| |------ 写入日期时间
| |
| |------ 写入逻辑
| |
| |------ 取错误信息
| |
| |------ 插入字节集
| |
| |------ 插入文本
| |
| |------ 插入小数
| |
| |------ 插入双精度小数
| |
| |------ 插入字节
| |
| |------ 插入短整数
| |
| |------ 插入整数
| |
| |------ 插入长整数
| |
| |------ 插入日期时间
| |
| |------ 插入逻辑
| |
| |------ 取文件映射尺寸
| |
| |------ 寻找字节集
| |
| |------ 中止寻找字节集
| |
| |------ 取寻找字节集进度
| |
| |------ 删除数据
| |
| |------ 取文件映射对象名
| |
| |
======调用的Dll
| |
| |---[dll]------ WriteFile
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ GetFileSize
| |
| |---[dll]------ GetLastError
| |
| |---[dll]------ FormatMessage
| |
| |---[dll]------ ReadFile
| |
| |---[dll]------ CreateFile
| |
| |---[dll]------ SetFilePointer
| |
| |---[dll]------ LockFile
| |
| |---[dll]------ UnlockFile
| |
| |---[dll]------ FlushFileBuffers
| |
| |---[dll]------ FlushViewOfFile
| |
| |---[dll]------ 取文件路径目录_
| |
| |---[dll]------ CreateFileMapping1
| |
| |---[dll]------ CreateFileMapping2
| |
| |---[dll]------ MapViewOfFile
| |
| |---[dll]------ UnmapViewOfFile
| |
| |---[dll]------ GlobalLock
| |
| |---[dll]------ GlobalHandle
| |
| |---[dll]------ OpenFileMapping
| |
| |---[dll]------ GlobalSize
| |
| |---[dll]------ CopyMemory
| |
| |---[dll]------ CopyMemory_s
| |
| |---[dll]------ CopyMemory_x
| |
| |---[dll]------ CopyMemory_sj
| |
| |---[dll]------ CopyMemory_d
| |
| |---[dll]------ CopyMemory_z
| |
| |---[dll]------ CopyMemory_c
| |
| |---[dll]------ CopyMemory_r
| |
| |---[dll]------ MoveMemory
| |
| |---[dll]------ VirtualQuery
调用的DLL命令:
.DLL命令 RtlMoveMemory_IMAGE_DOS_HEADER_1, , , "RtlMoveMemory"
.参数 Destination, IMAGE_DOS_HEADER
.参数 Source, 整数型
.参数 Length, 整数型
.DLL命令 RtlMoveMemory_IMAGE_NT_HEADERS_1, , , "RtlMoveMemory"
.参数 Destination, IMAGE_NT_HEADERS
.参数 Source, 整数型
.参数 Length, 整数型
.DLL命令 RtlMoveMemory_IMAGE_SECTION_HEADER_1, , , "RtlMoveMemory"
.参数 Destination, IMAGE_SECTION_HEADER
.参数 Source, 整数型
.参数 Length, 整数型
.DLL命令 LocalSize, 整数型, , "LocalSize"
.参数 hMem, 整数型
.DLL命令 RtlMoveMemory_IMAGE_DOS_HEADER, , , "RtlMoveMemory"
.参数 Destination, IMAGE_DOS_HEADER
.参数 Source, 整数型
.参数 Length, 整数型
.DLL命令 RtlMoveMemory_IMAGE_NT_HEADERS, , , "RtlMoveMemory"
.参数 Destination, IMAGE_NT_HEADERS
.参数 Source, 整数型
.参数 Length, 整数型
.DLL命令 _打开当前进程, 整数型, , "GetCurrentProcess", , kernel32.dll 打开当前进程伪句柄
.DLL命令 _文件是否存在, 逻辑型, "shlwapi", "PathFileExistsA"
.参数 PathOrFile, 文本型
.DLL命令 _关闭对象, 整数型, , "CloseHandle", 公开, kernel32.dll
.参数 对象句柄, 整数型
.DLL命令 读入缓存_, 整数型, "kernel32.dll", "_lread"
.参数 文件句柄, 整数型, , hFile
.参数 内存指针, 字节型, 数组, lpBuffer
.参数 读入字节数, 整数型, , wBytes
.DLL命令 打开文件_, 整数型, "kernel32.dll", "OpenFile"
.参数 文件名, 文本型, , lpFileName,欲打开文件的名字
.参数 文件操作结果, 文件结构信息_, 传址, lpReOpenBuff,文件操作结果
.参数 操作方式, 整数型, , wStyle,操作方式
.DLL命令 取文件尺寸_, 整数型, "kernel32", "GetFileSize"
.参数 文件句柄, 整数型
.参数 尺寸大小, 整数型
.DLL命令 打开文件映射对象_, 整数型, , "OpenFileMappingA", , kernel32.dll打开一个现成的文件映射对象 指定文件映射对象的句柄。零表示出错。会设置GetLastError
.参数 常数, 整数型, , 带有前缀FILE_MAP_???的一个常数。参考MapViewOfFile函数的dwDesiredAccess参数的说明
.参数 进程继承, 整数型, , 如这个函数返回的句柄能由当前进程启动的新进程继承,则这个参数为TRUE
.参数 文件映射对象名称, 文本型, , 指定要打开的文件映射对象名称;
.DLL命令 映射文件对象_, 整数型, , "MapViewOfFile", , kernel32.dll将一个文件映射对象映射到当前应用程序的地址空间。MapViewOfFileEx允许我们指定一个基本地址来进行映射 文件映射在内存中的起始地址。零表示出错。会设置GetLastError
.参数 hFileMappingObject, 整数型
.参数 dwDesiredAccess, 整数型
.参数 dwFileOffsetHigh, 整数型
.参数 dwFileOffsetLow, 整数型
.参数 dwNumberOfBytesToMap, 整数型
.DLL命令 解除文件映射_, 整数型, , "UnmapViewOfFile", , kernel32.dll在当前应用程序的内存地址空间解除对一个文件映射对象的映射 非零表示成功,零表示失败。会设置GetLastError
.参数 lpBaseAddress, 整数型, , 指定要解除映射的一个文件映射的基准地址。这个地址是早先用MapViewOfFile函数获得的;
.DLL命令 _指针_读字节集, 整数型, , "RtlMoveMemory", , kernel32.dll
.参数 Dest, 字节集
.参数 Source, 整数型
.参数 Length, 整数型
.DLL命令 HeapAlloc, 整数型, "kernel32.dll", "HeapAlloc", , 从堆中分配内存
.参数 hHeap, 整数型
.参数 dwFlags, 整数型
.参数 dwBytes, 整数型
.DLL命令 GetProcessHeap, 整数型, "kernel32.dll", "GetProcessHeap", , 获取调用过程堆句柄
.DLL命令 _取自进程ID, 整数型, , "GetCurrentProcessId", 公开, kernel32.dll
调用的DLL命令:
.DLL命令 WriteFile, 逻辑型, "kernel32.dll", "WriteFile", , (非零)表示成功,否则返回零。
.参数 文件句柄, 整数型, , hFile,一个文件的句柄
.参数 数据缓冲区, 字节集, 传址, lpBuffer,要写入的一个数据缓冲区
.参数 欲写入字节数量, 整数型, , nNumberOfBytesToWrite,要写入数据的字节数量。如写入零字节,表示什么都不写入,但会更新文件的“上一次修改时间”。针对位于远程系统的命名管道,限制在65535个字节以内
.参数 实际写入字节数量, 整数型, 传址, lpNumberOfBytesWritten,实际写入文件的字节数量
.参数 特殊结构, 整数型, , lpOverlapped,倘若在指定FILE_FLAG_OVERLAPPED的前提下打开文件,这个参数就必须引用一个特殊的结构。那个结构定义了一次异步写操作。否则,该参数应置为空(将声明变为ByVal As Long,并传递零值)
.DLL命令 CloseHandle, 整数型, "kernel32", "CloseHandle"
.参数 对象句柄, 整数型
.DLL命令 GetFileSize, 整数型, "kernel32.dll", "GetFileSize"
.参数 文件号, 整数型, , hFile
.参数 文件尺寸, 整数型, 传址, lpFileSize
.DLL命令 GetLastError, 整数型, "kernel32", "GetLastError"
.DLL命令 FormatMessage, 整数型, "kernel32.dll", "FormatMessageA"
.参数 dwFlags, 整数型
.参数 lpSource, 整数型, , Any
.参数 消息ID, 整数型
.参数 语言ID, 整数型, , 现在系统不支持了,置0
.参数 缓冲区, 文本型
.参数 缓冲区大小, 整数型
.参数 Arguments, 整数型
.DLL命令 ReadFile, 整数型, "kernel32", "ReadFile", , ""
.参数 hFile, 整数型, , 文件的句柄
.参数 lpBuffer, 字节集, 传址, 用于保存读入数据的一个缓冲区
.参数 nNumberOfBytesToRead, 整数型, , 要读入的字符数
.参数 lpNumberOfBytesRead, 整数型, 传址, 从文件中实际读入的字符数
.参数 lpOverlapped, 整数型, , 如文件打开时指定了FILE_FLAG_OVERLAPPED,那么必须用这个参数引用一个特殊的结构。那个结构定义了一次异步读取操作。否则,应将这个参数设为NULL(将函数声明成ByVal As Long,并传递零值)
.DLL命令 CreateFile, 整数型, "kernel32.dll", "CreateFileA", , ""
.参数 lpFileName, 文本型, , ""
.参数 dwDesiredAccess, 整数型, , ""
.参数 dwShareMode, 整数型, , ""
.参数 lpSecurityAttributes, 整数型, , ""
.参数 dwCreationDisposition, 整数型, , ""
.参数 dwFlagsAndAttributes, 整数型, , ""
.参数 hTemplateFile, 整数型, , ""
.DLL命令 SetFilePointer, 整数型, "kernel32.dll", "SetFilePointer", , ""
.参数 hFile, 整数型, , ""
.参数 lDistanceToMove, 整数型, , ""
.参数 lpDistanceToMoveHigh, 整数型, 传址, ""
.参数 dwMoveMethod, 整数型, , ""
.DLL命令 LockFile, 整数型, "kernel32", "LockFile", , ""
.参数 hFile, 整数型, , ""
.参数 dwFileOffsetLow, 整数型, , ""
.参数 dwFileOffsetHigh, 整数型, , ""
.参数 nNumberOfBytesToLockLow, 整数型, , ""
.参数 nNumberOfBytesToLockHigh, 整数型, , ""
.DLL命令 UnlockFile, 整数型, "kernel32", "UnlockFile", , ""
.参数 hFile, 整数型, , ""
.参数 dwFileOffsetLow, 整数型, , ""
.参数 dwFileOffsetHigh, 整数型, , ""
.参数 nNumberOfBytesToUnlockLow, 整数型, , ""
.参数 nNumberOfBytesToUnlockHigh, 整数型, , ""
.DLL命令 FlushFileBuffers, 逻辑型, "kernel32", "FlushFileBuffers"
.参数 hFile, 整数型, , ""
.DLL命令 FlushViewOfFile, 整数型, "kernel32", "FlushViewOfFile", , 将写入文件映射缓冲区的所有数据都刷新到磁盘
.参数 lpBaseAddress, , , 包含了刷新基本地址的一个Long值(参考注解)
.参数 dwNumberOfBytesToFlush, , , 欲刷新的字节数
.DLL命令 取文件路径目录_, 逻辑型, "shlwapi.dll", "PathRemoveFileSpecA", , 如:"c:\windows\boot.ini"返回"c:\windows"
.参数 路径文本, 文本型, , pszPath
.DLL命令 CreateFileMapping1, 整数型, "kernel32", "CreateFileMappingA", , 创建文件映射对象。成功就返回文件映射对象句柄
.参数 hFile, 整数型, , 欲在其中创建映射的一个已经打开的磁盘文件句柄
.参数 lpFileMappigAttributes, 整数型, , 通常用0表示使用默认security对象
.参数 flProtect, 整数型, , 打开映射的方式(用API常数表示的读/写或其它)
.参数 dwMaximumSizeHigh, 整数型, , 表示文件映射的最大长度的高32位。通常均设为0表示磁盘文件的实际长度
.参数 dwMaximumSizeLow, 整数型, , 表示文件映射的最大长度的低32位。通常均设为0表示磁盘文件的实际长度
.参数 lpName, 文本型, , 指定文件映射对象的名称
.DLL命令 CreateFileMapping2, 整数型, "kernel32", "CreateFileMappingA", , 创建文件映射对象。成功就返回文件映射对象句柄
.参数 hFile, 整数型, , 欲在其中创建映射的一个已经打开的磁盘文件句柄
.参数 lpFileMappigAttributes, 整数型, , 通常用0表示使用默认security对象
.参数 flProtect, 整数型, , 打开映射的方式(用API常数表示的读/写或其它)
.参数 dwMaximumSizeHigh, 整数型, , 表示文件映射的最大长度的高32位。通常均设为0表示磁盘文件的实际长度
.参数 dwMaximumSizeLow, 整数型, , 表示文件映射的最大长度的低32位。通常均设为0表示磁盘文件的实际长度
.参数 lpName, 整数型, , 指定文件映射对象的名称
.DLL命令 MapViewOfFile, 整数型, "kernel32.dll", "MapViewOfFile", , 将一个文件映射对象映射到当前应用程序空间。成功就返回文件映射在内存中的起始地址
.参数 hFileMappingObject, 整数型, , 文件映射对象的句柄
.参数 dwDesiredAccess, 整数型, , 用API常数表示的对文件映射的访问方式
.参数 dwFileOffsetHigh, 整数型, , 表示文件中的映射起点的高32位。通常均设为0表示从文件的起始处开始映射
.参数 dwFileOffsetLow, 整数型, , 表示文件中的映射起点的低32位。通常均设为0表示从文件的起始处开始映射
.参数 dwNumberOfBytesToMap, 整数型, , 要映射的字节数,通常设为0表示映射整个文件映射对象。
.DLL命令 UnmapViewOfFile, 整数型, "kernel32.dll", "UnmapViewOfFile", , 解除当前应用程序中的一个文件映射对象的映射地址空间。非零表示成功,零表示失败
.参数 lpBaseAddress, 整数型, , 要解除映射的文件映射起始地址。
.DLL命令 GlobalLock, 整数型, "kernel32.dll", "GlobalLock"
.参数 hMem, 整数型
.DLL命令 GlobalHandle, 整数型, "kernel32.dll", "GlobalHandle"
.参数 wMem, 整数型
.DLL命令 OpenFileMapping, 整数型, "kernel32.dll", "OpenFileMappingA", , 打开一个现成的文件映射对象
.参数 dwDesiredAccess, 整数型, , 用API常数表示的对文件映射的访问方式
.参数 bInheritHandle, 整数型, , 返回值对与子进程的继承属性,常设为False;
.参数 lpName, 文本型, , 指定要打开的文件映射对象名称
.DLL命令 GlobalSize, 整数型, "kernel32.dll", "GlobalSize"
.参数 hMem, 整数型
.DLL命令 CopyMemory, 整数型, "kernel32.dll", "RtlMoveMemory"
.参数 ptr, 整数型
.参数 struct, 字节集, 传址
.参数 cb, 整数型
.DLL命令 CopyMemory_s, 整数型, "kernel32.dll", "RtlMoveMemory"
.参数 ptr, 整数型
.参数 struct, 文本型, 传址
.参数 cb, 整数型
.DLL命令 CopyMemory_x, 整数型, "kernel32.dll", "RtlMoveMemory"
.参数 ptr, 整数型
.参数 struct, 小数型, 传址
.参数 cb, 整数型
.DLL命令 CopyMemory_sj, 整数型, "kernel32.dll", "RtlMoveMemory"
.参数 ptr, 整数型
.参数 struct, 双精度小数型, 传址
.参数 cb, 整数型
.DLL命令 CopyMemory_d, 整数型, "kernel32.dll", "RtlMoveMemory"
.参数 ptr, 整数型
.参数 struct, 短整数型, 传址
.参数 cb, 整数型
.DLL命令 CopyMemory_z, 整数型, "kernel32.dll", "RtlMoveMemory"
.参数 ptr, 整数型
.参数 struct, 整数型, 传址
.参数 cb, 整数型
.DLL命令 CopyMemory_c, 整数型, "kernel32.dll", "RtlMoveMemory"
.参数 ptr, 整数型
.参数 struct, 长整数型, 传址
.参数 cb, 整数型
.DLL命令 CopyMemory_r, 整数型, "kernel32.dll", "RtlMoveMemory"
.参数 ptr, 整数型
.参数 struct, 日期时间型, 传址
.参数 cb, 整数型
.DLL命令 MoveMemory, 整数型, "kernel32.dll", "RtlMoveMemory", , ""
.参数 ptr, 整数型
.参数 struct, 整数型
.参数 cb, 整数型
.DLL命令 VirtualQuery, 整数型, "kernel32.dll", "VirtualQuery", , ""
.参数 lpAddress, 整数型, , "类型为通用型,请在调试时调整其类型"
.参数 lpBuffer, MEMORY_BASIC_INFORMATION, 传址, ""
.参数 dwLength, 整数型, , ""
易语言简单的程序防爆暗桩功能源码,错误提示管理_,FF25_,子程序1,子程序2,CallWindowProcA,lstrcpyn...
易语言简单游戏资源打包例程写游戏体会源码,绘制网格页面,检测键盘控制,绘制预备页面,取运行时间_...
易语言私服登录器制作例程之游戏商城源码,初始化,管理商城,管理元宝,管理充值卡,子程序_刷新列表,子程序_刷新充值卡列表...
易语言破天一剑登录器支持多区商城充值卡账号管理源码,取MD5,API_CryptAcquireContext,API_CryptCreateHash,API_CryptReleaseContext,API_CryptHashData,API_CryptDestroyHash,API_CryptGetHashParam,DLL命令1,子程序_创建快捷...
易语言根据兲訫ve的修改的暗桩处理源码,错误提示管理_,FF25_,子程序1,子程序2,验证注册码,CallWindowProcA,lstrcpyn...
易语言树型框配合数据库例程源码,子程序_初始支出,子程序_读入支出,子程序_日常管理表头,子程序_树形框_首级菜单,子程序_是否有子项,子程序_列出当月支出,子程序_列出支出,子程序...
易语言图片浮雕效果字形窗口源码,输出字形窗口,启动路径分支_,设置背景模式_,文本绘图_,结束路径分支_,PathToRegion,设置窗口区域_,选入设备场景_,用指定属性创建逻辑字体_,删除对象_,取...
易语言点点通讯录源码,刷新,显示,清空资料,得到焦点,失去焦点,改变背景色,读出资料...
易语言api截图位图源码,创建内存场景_,创建GDI对象_,取位图二进制位_,置位图到设备场景_,选入设备场景_,删除设备场景_,删除对象_,复制场景位图_,取设备场景_...