Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 18.02.2013, 21:38   #1
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Эзотерическое программирование ч.1

Эзотерическое программирование
Здравствуйте, меня зовут Александр, мне 21 год и я наркоман программист.

В этом цикле статей не будет историй о эзотерических ЯП, но будет достаточно наглядный пример применения оккультных знаний в шарпе.

Managed Injection
Думаю как вы уже поняли, дальше речь пойдет о внедрении управляемого кода в адресное пространство другого приложения. Я полагаю вы понимаете какие границы это открывает для читера, и не только.

Для работы нам потребуется «прослойка» на плюсах, она будет выполнять роль посредника при загрузке нашего инжекта.

Код:
#include <Windows.h>
#include <mscoree.h>
#include <metahost.h>
#include <wchar.h>
#include <fstream>

#pragma comment(lib, "mscoree.lib")

DWORD WINAPI Inject_Thread(LPVOID lpParam)
{       
    ICLRMetaHost * lpMetaHost = NULL;
    HRESULT hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_ICLRMetaHost,
	  (LPVOID *)&lpMetaHost);

    ICLRRuntimeInfo * lpRuntimeInfo = NULL;

    hr = lpMetaHost->GetRuntime(
        L"v4.0.30319", 		// Версия фреймворка
        IID_ICLRRuntimeInfo,
        (LPVOID *)&lpRuntimeInfo);
    
    ICLRRuntimeHost * lpRuntimeHost = NULL;
    hr = lpRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost,IID_ICLRRuntimeHost,
        (LPVOID *)&lpRuntimeHost);
    
    hr = lpRuntimeHost->Start();

    DWORD dwRetCode = 0;
    hr = lpRuntimeHost->ExecuteInDefaultAppDomain(
        L"DLL_PATH",    	// Абсолютный путь к сборке
        L"Namespace.Class",	// Пространство имен и класс
        L"MethodName",		// Имя статического метода
        L"MethodParam",		// Параметры метода
        &dwRetCode);

    return 0;
}


DWORD APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
	switch (dwReason)
	{
	case DLL_PROCESS_ATTACH:
		CreateThread(NULL, NULL, Inject_Thread, NULL, NULL, NULL);
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
	default:
		break;
	}
	return true;
}
Остается только заполнить прокомментированные строки в приведенном коде и скомпилировать библиотеку.
Теперь можно инжектить полученную библиотеку в нужный нам процесс любым инжектором, а она в свою очередь подтянет и запустит нужный нам код.

В следующей статье будет небольшое знакомство с «Белой магией», библиотекой на C# созданной что бы облегчить нам жизнь при работе с хуками.

Мини-пруф:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Пример можно найти на GitHub'е [Ссылки могут видеть только зарегистрированные пользователи. ]
PDF версия [Ссылки могут видеть только зарегистрированные пользователи. ]
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
крайслер (19.02.2013), megweg (21.02.2013), object (18.02.2013), Sinyss (19.02.2013)
Старый 19.10.2014, 17:06   #2
 Разведчик
Аватар для ВладЕх
 
ВладЕх никому не известный тип
Регистрация: 02.08.2014
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Эзотерическое программирование ч.1

Извините, а как получить точную версию фреймворка? не будет ли фейла, если я я укажу просто 3.5?
  Ответить с цитированием
Старый 20.10.2014, 16:06   #3
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Эзотерическое программирование ч.1

Цитата:
Извините, а как получить точную версию фреймворка? не будет ли фейла, если я я укажу просто 3.5?

Сейчас уже редко где можно встретить ниже 4го.
  Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Прочее] Программирование Slavon92 Халява для Читера 4 03.12.2012 03:39
Программирование Mongol Вопросы и ответы, обсуждения 4 08.09.2011 22:02
[Помогите!] Программирование AliveNost Общение и обсуждение Perfect World 3 11.08.2011 19:39
[Помогите!] Программирование Destroyer74 Общение и обсуждение 9 13.08.2010 18:46

Заявление об ответственности / Список мошенников

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net