quanjiliu10091009 2014-10-13 03:57 采纳率: 0%
浏览 1723

nasm汇编全局字符串变量的声明问题

功能:提示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中怎么申明全局变量。这个问题一直没搞清楚>

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
    • ¥15 vs2019中数据导出问题
    • ¥20 云服务Linux系统TCP-MSS值修改?
    • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
    • ¥20 怎么在stm32门禁成品上增加查询记录功能
    • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
    • ¥50 NT4.0系统 STOP:0X0000007B
    • ¥15 想问一下stata17中这段代码哪里有问题呀
    • ¥15 flink cdc无法实时同步mysql数据
    • ¥100 有人会搭建GPT-J-6B框架吗?有偿