Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Inject code без dll injection 
V
    Опции темы
kb64
Дата 16.8.2009, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 2.2.2008

Репутация: нет
Всего: нет



Код

#include "stdafx.h"

#define process L"game.exe"

void SetDebugPriv();
DWORD GetProcessPID(wchar_t* processName);
void wr_func();

int _stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){

    SetDebugPriv();
    //GetProcessPID(process);

    HANDLE hOP = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, FALSE, GetProcessPID(process));
    void* alloc = 0;
    unsigned int start_adr = 0x0097EED9;
    SIZE_T allocsize = 2000;

    alloc = VirtualAllocEx(hOP, (void*)start_adr, allocsize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    WriteProcessMemory(hOP, (void*)start_adr, (void*)&wr_func, 500, 0);
    CloseHandle(hOP);
    return 0;

}

void SetDebugPriv(){
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp;
    if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    {
        LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid);
        tkp.PrivilegeCount = 1;
        tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(hToken, 0, &tkp, sizeof(tkp), NULL, NULL);
    }
}

DWORD GetProcessPID(wchar_t* processName){

    DWORD pid = 0;
    HANDLE hSnap;
    ::PROCESSENTRY32 pe32;

    if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) == INVALID_HANDLE_VALUE){
        cout << "FAILED" << endl;
        ExitProcess(0);
    }
    pe32.dwSize = sizeof(PROCESSENTRY32);
    Process32First(hSnap, &pe32);
    do{
        if(StrCmpNI(processName, pe32.szExeFile, sizeof(processName)) == 0){
            pid = pe32.th32ProcessID;
            break;
        }
    }while(::Process32Next(hSnap, &pe32));
    CloseHandle(hSnap);
    return pid;
}

void wr_func(){

    __asm{
        mov eax, ebx
        mov eax, ebx
        mov eax, ebx
        mov eax, ebx
        mov eax, ebx
    }

}


Суть в том, что мне нужно просто начиная с unsigned int start_adr = 0x0097EED9 вписать в процесс асм код функции wr_func(), вписывается фигня, цикл на перебор адресов ну типа start_adr++ делать неохото, подскажите как дальше реализовать и где косяк. спс. 

Это сообщение отредактировал(а) kb64 - 16.8.2009, 18:49
PM MAIL   Вверх
kb64
Дата 16.8.2009, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 2.2.2008

Репутация: нет
Всего: нет



ха! чёрт... и как я до этого не дошел... спасибо, то что надо
PM MAIL   Вверх
smoke_man
Дата 16.8.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 5
Всего: 17



не за что)


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
furang
Дата 8.10.2009, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.10.2009

Репутация: нет
Всего: нет



А как потом выполнить все это? Типа как-то так?
Код

    HANDLE rThread=CreateRemoteThread(hOP,NULL,0,(PTHREAD_START_ROUTINE)start_adr,NULL,0,NULL);
    WaitForSingleObject(rThread, 10000);
    CloseHandle(rThread);


И еще меня интересует можно ли как-то вставить не шеллкод, а именно инлайн асм вставку? Т.е. вставить реально 
Код

void wr_func(){

    __asm{
        mov eax, ebx
        mov eax, ebx
        mov eax, ebx
        mov eax, ebx
        mov eax, ebx
    }

}

и чтоб при компиляции все это дело само было преобразовано в шеллкод.
Может через какое-то ухищрение типа в начале функции сбросить в стек ее адресс и достать когда нужно будет.

Это сообщение отредактировал(а) furang - 8.10.2009, 13:14
PM MAIL   Вверх
GoldFinch
Дата 8.10.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



furang, если код базонезависимый - это и есть шеллкод.
пиши свою асм вставку так чтобы она была базонезависима
PM MAIL ICQ   Вверх
GremlinProg
Дата 8.10.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106




M
GremlinProg
furang
kb64
огласите причины инжекта



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 8.10.2009, 19:24 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



GremlinProg, в правилах не написано, что участники должны докладывать модераторам причины побудившие их задать вопросы на форуме. Либо ты превышаешь свои полномочия, либо убери иконку [М], и интересуйся как рядовой участник форума.

алсо обращай внимание на даты постов, kb64 написал свой последний пост в этой теме 2 месяца назад.

Добавлено @ 19:26
ссылка на правила, если кто забыл что в них написано : http://forum.vingrad.ru/act-boardrules.html


Это сообщение отредактировал(а) GoldFinch - 8.10.2009, 19:26
PM MAIL ICQ   Вверх
GremlinProg
Дата 8.10.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



GoldFinch, я могу в принципе этого не спрашивать,
а за нарушение правил форума просто блокировать обоих

вот чтобы не было недоразумений и задаю вопрос,
а за провокационные действия с твоей стороны,
которые тебе были уже оглашены не раз, ты можешь сам получить очередное предупреждение,
не нужно испытывать судьбу,
Цитата(GoldFinch @  8.10.2009,  21:24 Найти цитируемый пост)
обращай внимание на даты постов, kb64 написал свой последний пост в этой теме 2 месяца назад.

это было сделано не в этом подфоруме, тема была перемещена сегодня, откуда - не знаю

повторяю вопрос:

M
GremlinProg
furangkb64, огласите причины инжекта

либо причины будут удовлетворять правилам форума,
либо тема будет просто перемещена с глаз долой


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 8.10.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



Цитата(GremlinProg @  8.10.2009,  20:38 Найти цитируемый пост)
тема была перемещена сегодня, откуда - не знаю

у этой темы не написано что она была перемещена,
более того, я помню что она была создана в этом разделе

Цитата(GremlinProg @  8.10.2009,  20:38 Найти цитируемый пост)
за нарушение правил форума

я несколько раз перечитал правила. 
я не понимаю, как тема про инжект может нарушать правила форума. она нарушает пункт 2?
"Запрещается размещать материал, который является  (...) нарушающем какой-либо закон."
какой закон, и какой страны, может нарушать эта тема?

надеюсь обсуждение законности темы и ее соответствия правилам форума, это не нарушение правил форума?

Цитата(GremlinProg @  8.10.2009,  20:38 Найти цитируемый пост)
а за провокационные действия с твоей стороны,
которые тебе были уже оглашены не раз, ты можешь сам получить очередное предупреждение,
не нужно испытывать судьбу,

а вот это - 100% оффтоп и угрозы в мой адрес

Это сообщение отредактировал(а) GoldFinch - 8.10.2009, 20:09
PM MAIL ICQ   Вверх
furang
Дата 8.10.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.10.2009

Репутация: нет
Всего: нет



Перечитал правила форума и не нашел правило которое я нарушаю. Да мне надо внедрить свой код в чужой процесс. Естественно тот процесс об этом не заподозрит и нет это не вредоносное ПО.
Есть в том процессе функция, которую мне надо выполнить в том процессе со своими параметрами.

Я отковырял ее оттуда. Со своего процесса инжекшу/инжектю код с ссылкой на параметр.... Вобщем покажу код лучше.
Код

int ololol(char *olo)
{
        int res;
        void* strmem;
        DWORD codemem;
        char shellcode[]=
        "\x8B\x15\xB0\x05\x27\x01\x8B\x92\x94\x2D\x00\x00"//MOV EDX,DWORD PTR DS:[12705B0], MOV EDX,DWORD PTR DS:[EDX+2D94]
        "\xA1\x2C\x00\x00\x00\x8B\x00\x83\xC0\x08"//MOV EAX,DWORD PTR DS:[2C],MOV EAX,DWORD PTR DS:[EAX],ADD EAX,8
        "\x89\x10\x6A\x00\xB8\x78\x56\x34\x12"//MOV DWORD PTR DS:[EAX],EDX,PUSH 0,MOV EAX,12345678 адресс строки
        "\x50\x50\xFF\x15\xB0\xF6\x7C\x00\x83\xC4\x0C"//PUSH EAX,PUSH EAX,CALL 007CF6B0,ADD ESP,0C
        "\xC3";//retn
        
        ReadProcessMemory( hProc, (LPVOID)(0x0133D5B0), (LPVOID)&res, sizeof(res), NULL );
        while (res!=0)
        {
        ReadProcessMemory( hProc, (LPVOID)(0x0133D5B0), (LPVOID)&res, sizeof(res), NULL );
        Sleep(0);
        }
        SuspendThread(mThread);
        strmem=VirtualAllocEx(hProc,NULL,1024,MEM_COMMIT,PAGE_READWRITE);
        if (strmem==NULL)
        ShowMessage("Не удалось выделить память");
        WriteProcessMemory(hProc, strmem,&olo[0],100,NULL);
            
        codemem=(DWORD)VirtualAllocEx(hProc,NULL,1024,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
        if (codemem==NULL)
        ShowMessage("Не удалось выделить память");

        WriteProcessMemory(hProc, (LPVOID)codemem,&shellcode[0],sizeof(shellcode),NULL);
        WriteProcessMemory(hProc, (LPVOID)(codemem+27),&strmem,sizeof(codemem),NULL);
        
        
        HANDLE rThread=CreateRemoteThread(hProc,NULL,0,(PTHREAD_START_ROUTINE)codemem,NULL,0,NULL);
        WaitForSingleObject(rThread, 10000);
        CloseHandle(rThread);
        
        ResumeThread(mThread);
        if(!VirtualFreeEx(hProc,(LPVOID)strmem,NULL,MEM_RELEASE)) ShowMessage ("Не удалось освободить память");
        if(!VirtualFreeEx(hProc,(LPVOID)codemem,NULL,MEM_RELEASE)) ShowMessage ("Не удалось освободить память");
        return 0;
}

И все это дело вешает чужой процесс по непонятной мне причине.
Я здесь проездом. Просто увидел похожую проблему и зарегался.
UPD:Кажется понял...
Надо обрамить
pushad
pushfd
......
popfd
popad

Это сообщение отредактировал(а) furang - 8.10.2009, 21:51
PM MAIL   Вверх
furang
Дата 8.10.2009, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.10.2009

Репутация: нет
Всего: нет



Странно. ПРосто он потом рассматривается как код. Разве на него ядовитый ноль действует? А WriteProcessMemory() не смотрит на признак окончания строки а тупо пишет столько байт, сколько скажешь. Я даже дебагером залазил в чужой процесс и проверял. Записался ВЕСЬ шеллкод несмотря на нули.
В любом случае как избавится от него то?

Это сообщение отредактировал(а) furang - 8.10.2009, 22:11
PM MAIL   Вверх
GremlinProg
Дата 8.10.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



GoldFinch, еще раз попробуешь спровоцировать новичка,
ставлю вопрос о твоем пожизненном бане перед администрацией,
то, что ты делаешь называется троллинг, к тому же осознанный, который в проф. разделах вообще запрещен

Цитата(furang @  8.10.2009,  23:43 Найти цитируемый пост)
Перечитал правила форума и не нашел правило которое я нарушаю

furang, перечитай правила еще раз, 
и не смотри на GoldFinch, он прекрасно знает, что необоснованный инжект - нарушение гражданского кодекса РФ,
я с ним персонально разговаривал на эту тему, разжевал каждый пункт, он все понял

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

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

Цитата(furang @  8.10.2009,  23:43 Найти цитируемый пост)
 и нет это не вредоносное ПО

дело не только в вирусах
Цитата(furang @  8.10.2009,  23:43 Найти цитируемый пост)
Есть в том процессе функция, которую мне надо выполнить в том процессе со своими параметрами.

я все понимаю, но я не спрашиваю что ты хочешь сделать, это-то как раз понятно, я спрашиваю в каких целях?


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
furang
Дата 8.10.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.10.2009

Репутация: нет
Всего: нет



Расширяю возможности созданного не мной программного продукта. Фриварного продукта.
Создаю под заказ, для узкого круга пользователей, посему больше рассказать ничего не могу.
PM MAIL   Вверх
GremlinProg
Дата 8.10.2009, 22:46 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



вообще-то название ни какого, и уж тем более фриварного продукта не является коммекческой тайной,
и уж тем более функционал этого продукта

объясняю: у участников не должно быть вообще ни каких сомнений в легальности дискусси на подобные темы,
поэтому выкладывай конкретно проблему и причину, не надо этих ненужных тайн,
ты от этого ничего не потеряешь, может даже получишь более простое и верное решение


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 8.10.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



Цитата(GremlinProg @  8.10.2009,  23:20 Найти цитируемый пост)
GoldFinch, он прекрасно знает, что необоснованный инжект - нарушение гражданского кодекса РФ,
я с ним персонально разговаривал на эту тему, разжевал каждый пункт, он все понял

цитату!!!
давай цитату статьи кодекса ГК РФ, запрещающую инжект!

алсо, говори за себя, если говоришь за других - приводи доказательства.

Добавлено через 1 минуту и 57 секунд
Цитата(GremlinProg @  8.10.2009,  23:20 Найти цитируемый пост)
факт провокации я докажу

докажи
PM MAIL ICQ   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1242 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.