;... F proc uses esi arr mov esi, arr xor eax, eax mov cx, [esi] mov edx, 1L0: cmp [esi+2*edx], cx jne @F inc eax@@: inc edx cmp edx, 5 jb L0 retF endp end
Есть строка PHP: hash db 'test', 0 Как мне содержимое hash поместить сюда (в сам параметр)? PHP: invoke InternetOpenUrl, [hs], 'http://127.0.0.1:81/report.php?hash=1', 0, 0, 0, 0
.686 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\wininet.inc include \masm32\include\kernel32.inc includelib \masm32\lib\wininet.lib includelib \masm32\lib\kernel32.lib include \masm32\Macros\Strings.mac .const hash db 'test', 0 .data hs dd ? .code start: invoke InternetOpenUrlA, hs, $CTA0("http://127.0.0.1:81/report.php?hash=1"), OFFSET hash, 0, 0, 0 invoke ExitProcess, 0 END start
А какими платформами вы пользуетесь для работы с асм? Или тут все на линухе и ни в чем не нуждаются?)
Делаю дизассемблер с возможностью вставки кода в любое место. И вот появилась проблема. Если написать такой код, например для получения локальной переменной ( это же для этого так? ) Code: mov eax, [ebp + 0x01] То это один опкод. А если так Code: мov eax, [ebp + 0x101] То это уже другой машинный код команды. Так как я захотел в программе функционал вставки любого количества кода ( чтобы не нужно было писать jmp на пустое место и там производить операции ), то я отслеживаю некоторые команды. Например я отслеживаю команды lea. И если вставить код всередину, то в lea измениться адреса. Но как быть с такой адресацией, которую я привёл. Если с mov eax, [ebp + 1] понятно, там только с байт адресоваться можно на машинном коде, но если вписать число больше 255, то поменяется опкод и будет четырех байтным. Вместо этого числа может быть не число как таковое, а указатель на переменную в секции данных. А если это не указатель на данные, а указатель на стэк, только может ли быть в стеке элементов больше 255 байт? Ну может быть так никто не делает, но локальные переменных то может быть больше 255. Это локальные переменные вроде так получаются с помощью mov eax, [ebp - 8] например. Может ли быть, что в стеке будет локальных переменных больше 255? Тогда появляется проблема с адресацией. Пока что моя программа не поймёт на что указывает, если только не предусматривать сравнение адреса с секцией данных, тогда возможно понять что это к данным имеет дело.