【发布时间】:2025-12-24 18:40:11
【问题描述】:
假设,我在堆栈中创建了一个局部变量,或者为字符串分配了内存,现在我想在其中放入一个值。
push ebp
mov ebp, esp
sub esp, 0xff ; 255 bytes
并在 C 中将字符串存储在堆栈中:
strcat(my_str1, "something1");
strcat(my_str1, get_var2());
strcat(my_str1, "something3");
strcat(my_str1, get_var4());
我想了解如何在没有 FASM 或 NASM 中的“strcat”的情况下做到这一点:
;1
mov byte ptr [esp - 1], 's'
mov byte ptr [esp - 2], 'o'
mov byte ptr [esp - 3], 'm'
mov byte ptr [esp - 4], 'e'
; and so on
这是怎么做的?关于“get_var2()”和“get_var4()”的部分?
;2
call get_var2
mov ??byte?? ptr [esp - 11], eax
; or lea?
【问题讨论】:
-
尝试先在 C 中实现
strcat(不使用任何库函数)。然后你看看它是如何工作的,你可以在 asm 中做同样的事情。