[已解决]易语言中的字节集怎么在汇编中表示?
如题,还包括怎么相加等,下面是我的HOOK API代码,就等着这个完工==================================
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib
WriteApi proto :DWORD ,:DWORD,:DWORD,:DWORD
.data
hInstance dd 0
WProcess dd 0
DllNamedb "user32.dll",0
ApiNamedb "ExitWindowsEx",0
Pmapi dd 0
template db '%lX',0
posBuffer db 10 dup (0)
.data?
hHook dd ?
hWnd dd ?
.code
DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD
.if reason==DLL_PROCESS_ATTACH
push hInst
pop hInstance
invoke GetCurrentProcess
mov WProcess ,eax
invokeGetModuleHandle,addr DllName
invoke GetProcAddress,eax,addr ApiName
mov Pmapi,eax
invoke WriteApi,WProcess,Pmapi,90,8 ;这里的90就是我想写入的字节集,我想写这2句
;mov eax, addr MyAPI
;jmp eax
.endif
moveax,TRUE
ret
DllEntry Endp
GetMsgProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
invoke CallNextHookEx,hHook,nCode,wParam,lParam
ret
GetMsgProc endp
InstallHook proc hwnd:DWORD
push hwnd
pop hWnd
invoke SetWindowsHookEx,WH_GETMESSAGE,addr GetMsgProc,hInstance,NULL
mov hHook,eax
ret
InstallHook endp
UninstallHook proc
invoke UnhookWindowsHookEx,hHook
ret
UninstallHook endp
WriteApi proc Process:DWORD ,Papi:DWORD,Ptype:DWORD,Psize:DWORD
LOCAL mbi:MEMORY_BASIC_INFORMATION
LOCAL msize:DWORD
;返回虚拟信息
invoke VirtualQueryEx,Process,Papi,addr mbi,SIZEOF MEMORY_BASIC_INFORMATION
.IF (!eax)
ret
.endif
;修改虚拟保护
invoke VirtualProtectEx,Process,mbi.BaseAddress,Psize,PAGE_EXECUTE_READWRITE,mbi.Protect
.IF (!eax)
ret
.endif
;修改内存字节
invokeWriteProcessMemory,Process,Papi,addr Ptype,Psize,NULL
PUSH eax
invoke VirtualProtectEx,Process,mbi.BaseAddress,Psize,PAGE_EXECUTE_READ,mbi.Protect
POP eax
ret
WriteApi endp
MyAPI procbs:DWORD,dwReserved:DWORD
mov eax,TRUE
ret
MyAPI endp
End DllEntry
[ 本帖最后由 hacker0058 于 2006-6-27 18:17 编辑 ] 请各位大虾帮帮忙啊,急用,先谢谢了 不懂易语言,但在其它语言中可以通过定义一个BYTE或CHAR型的数组来实现。易语言中应该有数组类型吧?
我查了下:http://www.dywt.com.cn/vbs/dispbbs.asp?boardid=128&id=78017 不是,你误会我的意思了
我知道易语言
我是想问在汇遍中怎么声明和操作字节集
比如说,我想调用
WriteProcessMemory
向内存中写于这2句
mov eax,0x00040
jmp eax
用汇编该怎么做?
[ 本帖最后由 hacker0058 于 2006-6-23 20:11 编辑 ] code db xx,xx,xx,xxx,xx
这些XX为上面两条汇编语句的机器码。 我先试下看,谢了 code 是什么意思,变量吗?
是在.data里声明吗
如果0x00040是个变量该怎么做
例如
mov eax,addr MyAPI
jmp eax
我在子程序可以这样调用吗?
LOCAL papii:这里怎么声明?
papii db184, 0045600 ,255, 224
[ 本帖最后由 hacker0058 于 2006-6-23 20:23 编辑 ] CODE为变量名,在.data里声明 在.data里声明 的都是固定的
我修改的数据是一个变量该怎么办? 终于让我想到办法了
可以先定义一个结构
SEH struct
abyte ?
api DWORD ?
d byte ?
e byte ?
SEH ends
============================
WriteApi proc Process:DWORD ,Papi:DWORD,Ptype:DWORD
LOCAL mbi:MEMORY_BASIC_INFORMATION
LOCAL msize:DWORD
LOCAL hacker:SEH
push Ptype
pop hacker.api
mov hacker.a,184
mov hacker.d,255
mov hacker.e,224
=========================
......
invokeWriteProcessMemory,Process, Papi, addr hacker,sizeof SEH ,NULL
......
这样就OK了
页:
[1]