功能:提示MessageBox消息
1:
bits 32
call func0
db 'user32.dll',0
func0:
mov eax,7c801d7bH ;LOADLIBRARYA
CALL eax
push 0
call Func1
db "Infomation",0
Func1:
call Func1_1
Func1_1:
call Func2
db "This exe was Injected Code.",0
Func2:
push 0
mov eax,7e4507eaH ; 7e4507eaH MESSAGEBOXA
call eax
mov eax,00401f50H ;
jmp eax
字符串放在函数下面 自动进行一次
push szStr 操作
2:
bits 32
assume cs:code,ds:data
call $Message
mov eax,00401f50H ;
jmp eax
$Message:
push ebp
mov ebp,esp
sub esp,0CH
push ebx
push esi
push edi
lea edi, [ebp-0CH]
mov ecx, 3H
mov eax, 0H
rep stosd
mov eax, dllName
add eax, esi
push eax
mov eax,7c801d7bH ; LOADLIBRARYA
CALL eax
push 0
mov eax, Msg1
add eax, esi
push eax
mov eax, Msg2
add eax, esi
push eax
push 0
mov eax,7e4507eaH ; 7e4507eaH MESSAGEBOXA
call eax
pop edi
pop esi
pop ebx
add esp, 0CH
pop ebp
ret
dllName db 'user32.dll',0
Msg1 db "Infomation",0
Msg2 db "This exe was Injected Code.",0
字符串作为全局
要想找到字符串地址需要
mov eax, Msg1
add eax, esi
机器码:
B857000000 mov eax, Msg
01F0 add eax, esi
0x00000057 + esi
总结:第一种方式可行 机器码嵌入其他exe,可以执行
第二中方式在C++代码中 执行这段机器码 可以执行。但是嵌入 其他exe不可以执行
提示:汇编生成机器码的工具是nasm 平台是在xp
求教nasm中怎么申明全局变量。这个问题一直没搞清楚>