飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3805|回复: 9

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

[复制链接]

该用户从未签到

发表于 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
DllName  db "user32.dll",0
ApiName  db "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
     invoke  GetModuleHandle,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
    mov  eax,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

;修改内存字节

invoke  WriteProcessMemory,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 proc  bs:DWORD  ,dwReserved:DWORD

mov eax,TRUE
ret

MyAPI endp

End DllEntry

[ 本帖最后由 hacker0058 于 2006-6-27 18:17 编辑 ]
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-6-23 19:29:48 | 显示全部楼层
请各位大虾帮帮忙啊,急用,先谢谢了
PYG19周年生日快乐!

该用户从未签到

发表于 2006-6-23 19:55:28 | 显示全部楼层
不懂易语言,但在其它语言中可以通过定义一个BYTE或CHAR型的数组来实现。易语言中应该有数组类型吧?
我查了下:http://www.dywt.com.cn/vbs/dispbbs.asp?boardid=128&id=78017
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-6-23 20:06:14 | 显示全部楼层
不是,你误会我的意思了
我知道易语言
我是想问在汇遍中怎么声明和操作字节集

比如说,我想调用

WriteProcessMemory

向内存中写于这2句

mov eax,0x00040
jmp eax

用汇编该怎么做?

[ 本帖最后由 hacker0058 于 2006-6-23 20:11 编辑 ]
PYG19周年生日快乐!

该用户从未签到

发表于 2006-6-23 20:13:53 | 显示全部楼层
code db xx,xx,xx,xxx,xx
这些XX为上面两条汇编语句的机器码。
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-6-23 20:15:40 | 显示全部楼层
我先试下看,谢了
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-6-23 20:17:06 | 显示全部楼层
code 是什么意思,变量吗?
是在.data里声明吗

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

mov eax,addr MyAPI
jmp eax


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

papii    db  184, 0045600 ,255, 224

[ 本帖最后由 hacker0058 于 2006-6-23 20:23 编辑 ]
PYG19周年生日快乐!

该用户从未签到

发表于 2006-6-23 20:29:34 | 显示全部楼层
CODE为变量名,在.data里声明
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-6-24 18:04:08 | 显示全部楼层
在.data里声明 的都是固定的

我修改的数据是一个变量该怎么办?
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2006-6-27 18:20:59 | 显示全部楼层
终于让我想到办法了


可以先定义一个结构

SEH struct
a  byte ?
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

=========================

......

invoke  WriteProcessMemory,Process, Papi, addr hacker,sizeof SEH ,NULL

......

这样就OK了
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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