Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Не работает CreateRemoteThread на Window 7 64bit

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 16.10.2012, 12:07   #1
 Разведчик
Аватар для Vitalik_send
 
Vitalik_send никому не известный тип
Регистрация: 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
 Сержант
Аватар для pw.assistant
 
pw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауру
Регистрация: 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
 Разведчик
Аватар для Vitalik_send
 
Vitalik_send никому не известный тип
Регистрация: 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
 Сержант
Аватар для pw.assistant
 
pw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауру
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
 
По умолчанию Re: Не работает CreateRemoteThread на Window 7 64bit

Цитата:
Сообщение от Vitalik_sendПосмотреть сообщение
$80000000 это шестнадцатеричное число

да
  Ответить с цитированием
Старый 16.10.2012, 14:23   #5
 Разведчик
Аватар для Vitalik_send
 
Vitalik_send никому не известный тип
Регистрация: 23.05.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Не работает CreateRemoteThread на Window 7 64bit

Не работает этот способ.
Попробую еще на Windows xp 64bit, надеюсь там будет работать
  Ответить с цитированием
Старый 16.10.2012, 18:47   #6
 Сержант
Аватар для pw.assistant
 
pw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауру
Регистрация: 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
 Разведчик
Аватар для Vitalik_send
 
Vitalik_send никому не известный тип
Регистрация: 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
 Разведчик
Аватар для [phallic]
 
[phallic] никому не известный тип
Регистрация: 27.05.2012
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Не работает CreateRemoteThread на Window 7 64bit

Ничего не влияет.
Прямо сейчас сижу на W7 X64 (UAC отключен), все работает, без всяких танцев с бубном.
  Ответить с цитированием
Старый 17.10.2012, 12:26   #9
 Разведчик
Аватар для Vitalik_send
 
Vitalik_send никому не известный тип
Регистрация: 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
 Разведчик
Аватар для [phallic]
 
[phallic] никому не известный тип
Регистрация: 27.05.2012
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Не работает CreateRemoteThread на Window 7 64bit

Цитата:
Сообщение от Vitalik_sendПосмотреть сообщение
hProcThread = CreateRemoteThread(hProcess,NULL,NULL,(LPTHREAD_ST ART_ROUTINE)pFunction,NULL,NULL,NULL);

Ты забыл про параметры. Может в этом причина?
  Ответить с цитированием
Старый 18.10.2012, 03:35   #11
 Разведчик
Аватар для Vitalik_send
 
Vitalik_send никому не известный тип
Регистрация: 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
 Сержант
Аватар для gurin
 
gurin душа компанииgurin душа компанииgurin душа компанииgurin душа компанииgurin душа компанииgurin душа компанииgurin душа компанииgurin душа компании
Регистрация: 18.12.2009
Сообщений: 152
Популярность: 1075
Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
Отправить сообщение для gurin с помощью Skype™
 
По умолчанию 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
 Разведчик
Аватар для Vitalik_send
 
Vitalik_send никому не известный тип
Регистрация: 23.05.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Не работает CreateRemoteThread на Window 7 64bit

Пробовал пример с визовом в чужом процессе функции LoadLibrary, и CreateRemoteThread нормально ее вызывает.
Похоже у меня чтото неправильно с кодом инжекта, что на 32 битных работает, а на 64 - нет.
Буду розбираться
  Ответить с цитированием
Старый 15.06.2015, 00:10   #14
 Разведчик
Аватар для Fess88
 
Fess88 никому не известный тип
Регистрация: 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. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net