Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 02.10.2013, 23:13   #1
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

SeregaZ, я вообще на calc.exe эксперементировал
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 03.10.2013, 13:22   #2
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,229
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

а как это выглядит? небольшой патчик, типа применил к ехе целевой программы и она всегда после этого работает как надо, или эта программа висит все время в запущенном состоянии и как только целевой процесс полез за нужной функцией - делает свое черное дело.
(я к тому, что версий хрома миллион и выходят каждый раз новые - как можно предусмотреть кросплатформенность, или точнее кроссверсионность )
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 10.10.2013, 00:44   #3
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

как успехи?
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 10.10.2013, 02:33   #4
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,229
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

лично у меня совсем маленький сдвиг есть насчет goodvin1709 не знаю

мне дали код, где в целевой процесс вшиваться моя дополнительная длл, и уже из нее происходит перехват целевой функции. и я испытывал на своем проекте, где использовалась та моя функция и я точно знаю что она там есть - однако процесс хука работает через раз (сразу вспомнились запуски пиратской 1С бухгалтерии почему-то ), то нормально запустит и перехват я вижу, то сразу при запуске целевая вылетает с критом. чем в теории может быть вызвано такое нестабильное "хучение" процесса?

хром же и вовсе отказался хукаться... хотя может и не отказался, а просто не использует ту мою предполагаемую функцию, из-за которой сыр бор... нужен продвинутый апи монитор, который бы показывал крипто апи тоже! где взять такое? чтобы выяснить на 100% каким образом хром получает список названий сертификатов.
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 10.10.2013, 15:08   #5
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

а я никак не могу победить обработку данных при вызове сенда
с отправкой своего и обработкой приходящего - все ок..
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...
Elecktron вне форума   Ответить с цитированием
Старый 12.10.2013, 01:44   #6
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

перехват удачно идет а вот вызов оригинальной неа(
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/
goodvin1709 вне форума   Ответить с цитированием
Старый 12.10.2013, 05:32   #7
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,229
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

Procedure NewMessageBeep(Type.l)
MessageRequester("APIHOOK", "Beep!")
!jmp dword[p_oldMessageBeep]
EndProcedure

***

*oldMessageBeep = sethook("crypt32.dll", "CertGetCertificateContextProperty", @NewMessageBeep())

а вот такого у тебя подобного нет?
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 08.04.2015, 00:55   #8
Местный
 
Аватар для Elecktron
 
Регистрация: 27.10.2011
Адрес: Харьков
Сообщений: 106
Сказал Спасибо: 24
Имеет 11 спасибок в 7 сообщенях
Elecktron пока неопределено
По умолчанию

как я уже упоминал - "портировано 1 к 1 с с++":

получение указателя на экземпляр UNetworkHandler'а

Код:
UNetworkHandler: Pointer

//UNetworkHandler_Init
procedure UNetworkHandlerInit_hook();
asm
    mov    UNetworkHandler, ecx //сохраняем указатель на экземпляр
    MOV EAX,DWORD PTR FS:[0]   //
    jmp DWORD PTR initUH_orig //прыгаем в оригинальную
end;
внедрение кода (ставим свои адреса и радуемся)

Код:
function InitThread(lpParameter: pointer):dword;// stdcall;
 begin
 //подождать engine.dll, и начать внедрение своего кода
 repeat
  Sleep(100);
 until (GetModuleHandleA('engine.dll')<>0);

  buf :=  DWORD(@UNetworkHandlerInit_hook);
  //тут магия, хардкод и шанс попортить регистры. 
  initUH_orig:=Engine+$003B2D96;
  comm :=$e9;
  // Обычно страницы в этой области недоступны для записи
  // поэтому принудительно разрешаем запись
  VirtualProtect(ptr(Engine+$003B2D90),5,PAGE_READWRITE, @op);
  //вычисляем смещение которое запишем в джамп
  offset := buf - (Engine+$003B2D90 + 5);
  // Пишем новый адрес
  // нужно писать СМЕЩЕНИЕ!
  WriteProcessMemory(GetCurrentProcess(), ptr(Engine+$003B2D90),@comm,1,written);
  WriteProcessMemory(GetCurrentProcess(), ptr(Engine+$003B2D90+$01),@offset,4,written);
end;
"DLL Main"

Код:
procedure DLLEntryPoint(dwReason: DWORD);  export;
var
ThreadId:dword;
begin
  case dwReason of
    DLL_PROCESS_ATTACH:
    begin
      CreateThread(nil,0,@ InitThread,nil,0,ThreadId);
    end;
    DLL_PROCESS_DETACH:
    begin

    end;
  end
end;
все это "хардкод", "дурной тон" и "так нельзя"
и не забываем все действия десять раз перепроверить в отладчике.
__________________
C++Builder 6, Delphi 7, RAD Studio XE2, MS VC++...

Последний раз редактировалось Elecktron, 08.04.2015 в 01:00.
Elecktron вне форума   Ответить с цитированием
Старый 09.04.2015, 11:44   #9
Новичок
 
Регистрация: 25.03.2014
Сообщений: 11
Сказал Спасибо: 4
Имеет 0 спасибок в 0 сообщенях
user713 пока неопределено
По умолчанию UGameEngine::OnNpcHtmlMessage

Люди добрые, выручайте! Пытаюсь из engine.dll вызвать UGameEngine::OnNpcHtmlMessage.

PHP код:
void html_this NULL// <<< где взять изначально???

typedef int (__thiscall *_OnNpcHtmlMessage) (void Thisvoid userwchar_t htmlint unk);
_OnNpcHtmlMessage true_OnNpcHtmlMessage;

int __fastcall new_OnNpcHtmlMessage(void Thisunsigned int EDXvoid userwchar_t htmlint unk)
{
    if(
html_this == NULLhtml_this This//Тут выдёргиваю пойнтер при первом вызове диалога сервером
    
return true_OnNpcHtmlMessage(This0html0);
}

void NpcHtmlMessage()
{
    
wchar_t html[] = L"<html></html>";
    if(
html_this != NULLtrue_OnNpcHtmlMessage(html_this0html0);

P.S: Если html_this != NULL, то окно можно открыть хоть на экране ввода логина и пароля.
Хукается вроде успешно, НО где достать пойнтер This, чтобы вызывать эту функцию без предварительного получения This?

Добавлено через 7 минут
Да и вообще очень интересует как вызвать (__thiscall)OnNpcHtmlMessage, да или вообще что угодно из engine.dll !!! Дайте пример или пните в каком направлении капать))

Последний раз редактировалось user713, 09.04.2015 в 11:44. Причина: Добавлено сообщение
user713 вне форума   Ответить с цитированием
Старый 09.04.2015, 12:37   #10
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

This - это указатель в памяти на объект UNetworkHandler, чтобы его получить надо перехватить один из его методов и получить этот адрес.

Например ставим хук на

PHP код:

class UNetworkHandler {};

UNetworkHandlerUNH;

int __fastcall UNetworkHandler_AddNetworkQueue_hook(UNetworkHandlerThisint /*edx*/NetworkPacketpacket)
{
    if(
UNH == 0)
    {
        
UNH This;
    }

.... 
Но чтобы произошел AddNetworkQueue_hook необходимо отправка хотя бы одного пакета на сервер. Например при вводе пароля.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
За это сообщение Yegor нажился спасибкой от:
Ответ

  CoderX :: Forums > Основные форумы > Программинг


Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:54.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!