Viktor
22, опечатка
Viktor
8/4 = 2 88/4 = 22
Viktor
Еще раз всем спасибо :)
KosBeg
пожалуйста(если хоть чем нибудь помог) 🌝
Viktor
помог тем armconverter'ом Благодаря нему я заметил, что только кратные 4 оффсеты обрабатываются без ошибок для thumb
Олег
Может кому пригодится
Олег
#دانلود_کتاب ؛ برنامه نویسی #ARM با زبان #اسمبلی بهمراه تجربیات سخت افزاری (#LPC1768) از انتشارات اشپرینگر. آموزش #معماری_کامپیوتر و تراشه های ARM از جمله LPC1768 و مثال عملی در محیط #keil @embedded
Олег
#LPC1768 #ARM #Assembly #keil #computer_architecture #ARM_Architecture #microcontrollers @embedded
@ENERGY_STAFF
друзья, как на масме слинковать прогу вместе с kernel32?
@ENERGY_STAFF
uselib kernel32?
bilka00
В смысле слинковать вместе?
bilka00
Импорты добавить зачем линковать kernel
@ENERGY_STAFF
пишу uselib kernel32 масм пишет error A2006: undefined symbol : _LoadLibraryAFunc, такой разве нет в kernel32
bilka00
Так хидеры с прототипами подключи
bilka00
Помимо .lib
bilka00
.inc должно быть
@ENERGY_STAFF
include \masm32\include\windows.inc include \masm32\macros\macros.asm
@ENERGY_STAFF
они?
bilka00
kernel32.inc
bilka00
kernel32.asm
bilka00
Скорей эти
bilka00
Скопируй из любого hello world
bilka00
Хотя там наверное только .inc
bilka00
И блин вообще выброси масм
bilka00
Фасм рулит имхо
Учебник есть по фасм?
bilka00
А вот хз
bilka00
Я скорей форумы да доки смотрел
bilka00
(Доки это громко сказано просто оф форум)
bilka00
Хотя на деле там неплохие доки с примерами
Ну а ежели ничего не знаешь
База то нужна
@ENERGY_STAFF
добавил: include \masm32\include\kernel32.inc uselib kernel32, user32 includelib kernel32.lib все равно пишет error A2006: undefined symbol : _LoadLibraryA притом что в мсдн черным по белому что LoadLibrary в kernel32
bilka00
Эм ну он там есть
bilka00
Это факт
bilka00
Скинь весь код если не большой
bilka00
Если большой то мне впадлу будет ковыряться(
@ENERGY_STAFF
убрал нижнее подчеоркивание компильнулось, странно почему то в нете пример был с подчеркиванием
­
Ох уж эти знаки препинания...
Anonymous
Ох уж эти знаки препинания...
особенно точки с запятой 😡
­
Игру StarCraft открыли для машинного обучения. Теперь Скайнет умеет ещё и в зерграш.
@ENERGY_STAFF
особенно точки с запятой 😡
с точкой запятой все понятно, а вот в каких случаях нужно использовать нижнее подчеркивание с именем функции и букву А (_LoadLibraryA) несовсем понял я
Vitaliy ◀️TriΔng3l▶️
На MSDN указывается, есть ли у функции WinAPI отдельные версии для ASCII и Юникода
Vitaliy ◀️TriΔng3l▶️
Подчёркивание — всегда. Это потому что вдруг у тебя функция называется mov, или eax. К символам его компиляторы C/C++ добавляют.
@ENERGY_STAFF
Подчёркивание — всегда. Это потому что вдруг у тебя функция называется mov, или eax. К символам его компиляторы C/C++ добавляют.
а как объяснить то что с подчеркиванием не компилится, а без подчеркивания все ок?
Vitaliy ◀️TriΔng3l▶️
а как объяснить то что с подчеркиванием не компилится, а без подчеркивания все ок?
Что именно? Может быть, у тебя импорт объявлен без подчёркивания?
Vitaliy ◀️TriΔng3l▶️
Сами символы в DLL и в lib с подчёркиваниями
Anonymous
#pragma comment(lib,"ntdll.lib")
Anonymous
для x86 сборки в msvc работает
Anonymous
однако какойто бред происходит в x64
Anonymous
например не могу инжектить 32bit shellcode в 32битный процесс
Anonymous
темже NtCreateThreadEx
Anonymous
метод getprocaddr работает
Anonymous
вот поменял через екстерны и чертовщина
Anonymous
BOOL CodeInject::injNtCreateThreadEx(HANDLE handle, const Shellcode_t& sc) { DWORD ret; LPVOID sc_addr; HANDLE hRemoteThread; size_t sc_size = sc.size(); if (!sc_size) return FALSE; sc_addr = VirtualAllocEx( handle, NULL, sc_size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); if (!sc_addr) return FALSE; ret = WriteProcessMemory( handle, sc_addr, &sc.front(), sc_size, NULL); if (!ret) return FALSE; ret = NtCreateThreadEx( &hRemoteThread, GENERIC_ALL, NULL, handle, sc_addr, 0, FALSE, NULL, NULL, NULL, NULL); if (NT_ERROR((NTSTATUS) ret)) return FALSE; return TRUE; }
Anonymous
EXTERN_C NTSTATUS NTAPI NtCreateThreadEx(PHANDLE, ACCESS_MASK, LPVOID, HANDLE, LPVOID, LPVOID, BOOL, DWORD, DWORD, DWORD, LPVOID);
Anonymous
на сборке под x86 работает прекрасно
Anonymous
на x64 не инжектит 32битный код в 32битный проц
Nikolai
👍
Anonymous
не понял
Anonymous
к чему это?
Anonymous
а теперь в замешательстве, впадлу переписывать обратно к гетпроцадресам
Anonymous
валится на создании потока
Anonymous
👍
ага, также не работает. был не тот метод инжекта прописан(
Anonymous
чет неверно функцию написал
Anonymous
но.. на сборке x86 все шикарно
Justin
Давненько я не заходил в Телеграмм
Justin
Anonymous
собсна я гдето протупил с NtCreateThreadEx, работает под x86 не работает под x64
Anonymous
plz))))))))))))))
Ivan
@ENERGY_STAFF
plz))))))))))))))
а причем здесь асм вообще?
Anonymous
не, тут все в порядке я компилю под x64 и выдаетет аксесдинайд 1300 (NtCreateThreadEx)
Anonymous
Другие методы инжекта работают
Anonymous
а причем здесь асм вообще?
функция недокументированная и проверить почему выдана ошибка можно по чужому опыту или отладкой режима ядра(посути это сискол)
Anonymous
похоже придется забить на свой перфекционизм, извините за излишнее колво вопросов.
bilka00
А просто CreateThreadEd?