 |
Не работает CreateRemoteThread на Window 7 64bit - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
16.10.2012, 12:07
|
#1
|
|
|
|
|
|
Разведчик
|
 Регистрация: 23.05.2011
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Не работает CreateRemoteThread на Window 7 64bit
Помогите пожалуйста розобраться.
На Windows xp и на Windows 7 32bit все работает нормально, а на Window 7 64bit CreateRemoteThread возвращает 0.
Все запущено от администратора, оба процесса, и бот и PW 32 битные, в чем может быть причина?
|
|
|
|
16.10.2012, 12:17
|
#2
|
|
|
|
|
|
Сержант
|
 Регистрация: 16.02.2012
 Сообщений: 105
 Популярность: 651
 Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
Нужно выдать привелегии
Код:
function EnableDebugPrivilege(const Value: Boolean): Boolean;
const
SE_DEBUG_NAME = 'SeDebugPrivilege';
var
hToken: THandle;
tp: TOKEN_PRIVILEGES;
d: DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then
begin
tp.PrivilegeCount := 1;
LookupPrivilegeValue(nil, SE_DEBUG_NAME, tp.Privileges[0].Luid);
if Value then
tp.Privileges[0].Attributes := $00000002
else
tp.Privileges[0].Attributes := $80000000;
AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d);
if GetLastError = ERROR_SUCCESS then
begin
Result := True;
end;
CloseHandle(hToken);
end;
end;
|
|
|
|
16.10.2012, 12:49
|
#3
|
|
|
|
|
|
Разведчик
|
 Регистрация: 23.05.2011
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
такой еще глупый вопрос по синтаксису, ато делфи я не очень знаю, $80000000 это шестнадцатеричное число?
Добавлено через 17 минут
не помогло 
У кого еще какие предложения, пишите пожалуйста
Последний раз редактировалось Vitalik_send; 16.10.2012 в 13:06.
Причина: Добавлено сообщение
|
|
|
|
16.10.2012, 14:15
|
#4
|
|
|
|
|
|
Сержант
|
 Регистрация: 16.02.2012
 Сообщений: 105
 Популярность: 651
 Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
|
|
|
|
16.10.2012, 14:23
|
#5
|
|
|
|
|
|
Разведчик
|
 Регистрация: 23.05.2011
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
Не работает этот способ.
Попробую еще на Windows xp 64bit, надеюсь там будет работать
|
|
|
|
16.10.2012, 18:47
|
#6
|
|
|
|
|
|
Сержант
|
 Регистрация: 16.02.2012
 Сообщений: 105
 Популярность: 651
 Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
У меня была проблема именно с невыдачей привелегий - OpenProcess возвращал 0. Узнал что на семерке x64 нужно выдавать debug-привелегии приложению, иначе система блокирует доступ к чужим приложениям. Выдал привелегии - все заработало, даже на windows 8 x64 пашет.
У Вас видимо проблема в другом.
|
|
|
|
17.10.2012, 02:31
|
#7
|
|
|
|
|
|
Разведчик
|
 Регистрация: 23.05.2011
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
но 64 битность не влияет на инжект функции и ее вызов?
Добавлено через 2 минуты
Потомучто та же самая версия windows 7, только 32 битная работала
Последний раз редактировалось Vitalik_send; 17.10.2012 в 02:34.
Причина: Добавлено сообщение
|
|
|
|
17.10.2012, 04:50
|
#8
|
|
|
|
|
|
Разведчик
|
 Регистрация: 27.05.2012
 Сообщений: 7
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
Ничего не влияет.
Прямо сейчас сижу на W7 X64 (UAC отключен), все работает, без всяких танцев с бубном.
|
|
|
|
17.10.2012, 12:26
|
#9
|
|
|
|
|
|
Разведчик
|
 Регистрация: 23.05.2011
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
Может я както неправильно проект создал, или нетак процесс открыл?
Процесс открываю hProcess=OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_CREATE_THREAD,false,procId);
пробовал с PROCESS_ALL_ACCESS, то же самое.
Память выделяю
pFunction=(DWORD*)VirtualAllocEx(hProcess,NULL,fun cSize,MEM_COMMIT,PAGE_READWRITE);
Записываю и запускаю функцию
WriteProcessMemory(hProcess,(LPVOID)pFunction,code ,len,NULL);
hProcThread = CreateRemoteThread(hProcess,NULL,NULL,(LPTHREAD_ST ART_ROUTINE)pFunction,NULL,NULL,NULL);
Добавлено через 55 минут
я начал розбираться с привилегиями, и выяснил что GetCurrentProcess() возвращает 0xffffffff, что это означает?
Добавлено через 1 час 38 минут
нашел дискриптор другим способом, но результат тот же
Последний раз редактировалось Vitalik_send; 17.10.2012 в 14:05.
Причина: Добавлено сообщение
|
|
|
|
17.10.2012, 15:31
|
#10
|
|
|
|
|
|
Разведчик
|
 Регистрация: 27.05.2012
 Сообщений: 7
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
|
|
|
|
18.10.2012, 03:35
|
#11
|
|
|
|
|
|
Разведчик
|
 Регистрация: 23.05.2011
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
параметры в CreateRemoteThread ?
Добавлено через 2 минуты
Параметры вызываемой функции записываются вместе с самой функцией.
На 32 битных виндовсах этот код работает. Если б забыл, там бы тоже неработало
Последний раз редактировалось Vitalik_send; 18.10.2012 в 03:37.
Причина: Добавлено сообщение
|
|
|
|
18.10.2012, 08:53
|
#12
|
|
|
|
|
|
Сержант
|
 Регистрация: 18.12.2009
 Сообщений: 152
 Популярность: 1075
 Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
Я так понимаю, эта проблема всплыла в продцедуре инжекта пакетов?
Вот абсолютно рабочий код на любой версии винды от ХР х32 до Win8 х64
Код:
procedure InjectFunc(ProcessID: NativeUInt; Func, aParams: Pointer; aParamsSize: NativeUInt);
var
hThread: THandle;
lpNumberOfBytes: NativeUInt;
lpThreadId: Cardinal;
ThreadAddr, ParamAddr: Pointer;
begin
if ProcessID <> 0 then
begin
// ---- Выделяем место в памяти процесса, и записываем туда нашу функцию
ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);
// ---- Также запишем параметры к ней
ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);
// ---- Создаем поток, в котором все это будет выполняться.
hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpThreadId);
// ---- Ожидаем завершения функции
WaitForSingleObject(hThread, INFINITE);
// ---- подчищаем за собой
CloseHandle(hThread);
VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
end
end;
|
|
|
|
18.10.2012, 15:12
|
#13
|
|
|
|
|
|
Разведчик
|
 Регистрация: 23.05.2011
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
Пробовал пример с визовом в чужом процессе функции LoadLibrary, и CreateRemoteThread нормально ее вызывает.
Похоже у меня чтото неправильно с кодом инжекта, что на 32 битных работает, а на 64 - нет.
Буду розбираться
|
|
|
|
15.06.2015, 00:10
|
#14
|
|
|
|
|
|
Разведчик
|
 Регистрация: 11.05.2014
 Сообщений: 6
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Не работает CreateRemoteThread на Window 7 64bit
Друзья, подскажите, у меня похожая проблема - OpenProcess возвращает 0 на Windows XP x86.
При этом на Win 7 (и 32 и 64) все работает отлично!
Код:
void MemReader::Open(DWORD accessRights) // реализация функции открытия процесса
{
GetPID();
m_hProc = OpenProcess(accessRights, false, m_pID);
cout << "Proc" << m_hProc <<endl ; // выводится несколько нулей
}
PID процесса получается без проблем.
Подскажите, в чем может быть проблема на XP? ЗАпускаю все из под пользователя с админскими правами.
Добавлено через 16 часов 27 минут
Разобрался в проблеме, оказалось XP иногда косячит с PROCESS_ALL_ACCESS, задал их отдельно:
PROCESS_CREATE_THREAD+PROCESS_QUERY_INFORMATION+PR OCESS_VM_OPERATION+PROCESS_VM_READ+PROCESS_VM_WRIT E, и все заработало!
Вот изменившийся код:
Код:
void MemReader::Open(DWORD accessRights) // реализация функции открытия процесса
{
GetPID();
m_hProc = OpenProcess(PROCESS_CREATE_THREAD|PROCESS_QUERY_INFORMATION|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, false, m_pID);// права доступа, нет, куда записать ID проца
cout << "Proc" << m_hProc <<endl ;
}
Последний раз редактировалось Fess88; 15.06.2015 в 16:38.
Причина: Добавлено сообщение
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Window Renamer
|
^[D[a]rK]^ |
Боты, скрипты и прочий софт для Lineage 2 |
2 |
27.02.2012 22:52 |
|
[Руководство] CF Window Mode!![Банально,но работает!!]
|
Sno_Owy_Like |
Общение и обсуждение CrossFire |
12 |
04.06.2011 14:08 |
|
[Программа] PW Window Unfreezer
|
KloneB@DGuY |
Боты, скрипты и прочий софт для Perfect World |
21 |
20.09.2010 18:57 |
|
window 7 32bita
|
nekit461 |
Общение и обсуждение, архив Point Blank |
11 |
15.06.2010 01:00 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 11:31.
|
 |