Я получил код ассемблера, который создает форматированную строку, используя sprintf()
:
...
0x00304272: call 0x557b2 <dyld_stub___sprintf_chk>
...
Я пытаюсь выяснить, как именно строка форматируется, поэтому я нашел аргумент формата "%s%s"
, который хранится в регистре $ecx
. Теперь я не знаю, где заканчивается одна строка и начинается следующая, поэтому я бы хотел изменить аргумент формата на "%s@%s"
.
Я пытался использовать set $ecx = "%s@%s"
(что, кажется, работает, согласно print (char *) $ecx
), но по какой-то причине sprintf()
использует строку формата old вместо новой.
Я что-то пропустил? Как изменить строку формата?