У функции Код (Text): NTSTATUS NewNtWriteVirtualMemory ( IN HANDLE ProcessHandle, IN PVOID BaseAddress, IN PVOID Buffer, IN ULONG BufferLength, OUT PULONG ReturnLength OPTIONAL ) Есть параметр IN PVOID Buffer... Мне необходимо произвести поиск по нему как по строке, определенной подстроки, например "qwerty". Не подскажете как это сделать ? Перепробовал все... всегда получаю БСОД =\
strstr ? только есесно в блоке try/except (хотя от ошибки страницы в неподкачиваемой области это не спасет). Телепатов пока что нету... !analyze -v и сюды
StrStr работает. Но дело в том что строка QweRty может быть написана в разных регистрах... поэтому я привожу искомую подстрокуи и строку где нада ее найти в верхний регистр. Но если это сделать, то содержимое буффера измениться, что приведет к БСОДУ. Не подскажете как это исправить ? =\ Как привести к верхнму регистру, не меняя содержимое буффера? StriStr не работает... она не определена =\
Если про буфер,может подскажите как выделить большой объём? Или как после GlobalLock обратится к памяти как к данным,т.е. сделать изменения.
GlobalLock возвращает адрес участка памяти. Обращайся как хочешь. Только GlobalUnlock сделать не забудь
shinkevichdmitry http://www.wasm.ru/forum/viewtopic.php?pid=167377#p167377 http://www.wasm.ru/comment.php?artcode=1001012
дада. тогда уж легче strcpy(lpBuffer,"qwerty") но дело в том, что строковые функции работают с null-terminated строками, а в буфере перед твоей строкой может быть что угодно, включая нолеги. также в буфере могут вобще отсутствовать нули или размер буфера всего 1 байт, а ты там будешь искать подстроку в 10 байт.. такой ф-ии нету. есть StrStrI, но она вроде как отсуцтвует в ядре
Я конечно всё понимаю,только возвращается указатель на блок. Можно сделать на него переход jmp или call. Но как сделать пересылку данных без API командой mov или другими, как если бы это был массив из неинициализированных данных .data ? buffer db 65536 dup (?) .code start: mov [buffer],5 C pMemory так изменится указатель
shinkevichdmitry mov edi, [pMemory] mov byte ptr [edi], 5 только лучше задавай такие вопросы в разделе бегиннерсов а то интересная тут каша получается кернел + бегиннерс = вин32 )