hacker0058 发表于 2006-6-23 19:27:34

[已解决]易语言中的字节集怎么在汇编中表示?

如题,还包括怎么相加等,下面是我的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 编辑 ]

hacker0058 发表于 2006-6-23 19:29:48

请各位大虾帮帮忙啊,急用,先谢谢了

caterpilla 发表于 2006-6-23 19:55:28

不懂易语言,但在其它语言中可以通过定义一个BYTE或CHAR型的数组来实现。易语言中应该有数组类型吧?
我查了下:http://www.dywt.com.cn/vbs/dispbbs.asp?boardid=128&id=78017

hacker0058 发表于 2006-6-23 20:06:14

不是,你误会我的意思了
我知道易语言
我是想问在汇遍中怎么声明和操作字节集

比如说,我想调用

WriteProcessMemory

向内存中写于这2句

mov eax,0x00040
jmp eax

用汇编该怎么做?

[ 本帖最后由 hacker0058 于 2006-6-23 20:11 编辑 ]

caterpilla 发表于 2006-6-23 20:13:53

code db xx,xx,xx,xxx,xx
这些XX为上面两条汇编语句的机器码。

hacker0058 发表于 2006-6-23 20:15:40

我先试下看,谢了

hacker0058 发表于 2006-6-23 20:17:06

code 是什么意思,变量吗?
是在.data里声明吗

如果0x00040是个变量该怎么做
例如

mov eax,addr MyAPI
jmp eax


我在子程序可以这样调用吗?
LOCAL papii:这里怎么声明?

papii    db184, 0045600 ,255, 224

[ 本帖最后由 hacker0058 于 2006-6-23 20:23 编辑 ]

caterpilla 发表于 2006-6-23 20:29:34

CODE为变量名,在.data里声明

hacker0058 发表于 2006-6-24 18:04:08

在.data里声明 的都是固定的

我修改的数据是一个变量该怎么办?

hacker0058 发表于 2006-6-27 18:20:59

终于让我想到办法了


可以先定义一个结构

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]
查看完整版本: [已解决]易语言中的字节集怎么在汇编中表示?