• Обратная связь: [email protected]

    Наш канал в telegram: https://t.me/ru_sfera

    Группа VK: https://vk.com/rusfera

    Пользователи могут писать на форуме ТОЛЬКО ЧЕРЕЗ 7 ДНЕЙ после регистрации

Информация Фантастические руткиты: И где их найти (часть 1)


offsec

Уважаемый пользователь
Форумчанин
Регистрация
12.11.2023
Сообщения
22
Репутация
18
Вот такой вопрос возник, как в автоматическом режиме узнать смещения _EPROCESS?
Что-то типо такого, не проверял особо
C++:
#include <windows.h>
#include <dbghelp.h>
#pragma comment(lib, "dbghelp.lib")

class ProcessOffsetFinder {
private:
    HANDLE hProcess;
    
public:
    ProcessOffsetFinder() {
        // baza
        SymInitialize(GetCurrentProcess(), NULL, TRUE);
    }

    DWORD64 GetEprocessOffset(const char* memberName) {
        SYMBOL_INFO symbolInfo = { 0 };
        symbolInfo.SizeOfStruct = sizeof(SYMBOL_INFO);
        symbolInfo.MaxNameLen = MAX_SYM_NAME;

        // --> базовый адрес _EPROCESS
        if (!SymFromName(GetCurrentProcess(), "_EPROCESS", &symbolInfo)) {
            printf("Failed to get _EPROCESS: %d\n", GetLastError());
            return 0;
        }

        
        TI_FINDCHILDREN_PARAMS childParams = { 0 };
        ULONG typeId = symbolInfo.TypeIndex;
        
        if (SymGetTypeInfo(GetCurrentProcess(), symbolInfo.ModBase,
                          typeId, TI_GET_CHILDRENCOUNT, &childParams.Count)) {
            childParams.Start = 0;
            
            for (ULONG i = 0; i < childParams.Count; i++) {
                WCHAR* name;
                DWORD offset;
                
                if (SymGetTypeInfo(GetCurrentProcess(), symbolInfo.ModBase,
                                 typeId, TI_GET_OFFSET, &offset)) {
                    printf("%s offset: 0x%x\n", name, offset);
                }
            }
        }
        return 0;
    }

    ~ProcessOffsetFinder() {
        SymCleanup(GetCurrentProcess());
    }
};

int main() {
    ProcessOffsetFinder finder;
    
    
    finder.GetEprocessOffset("UniqueProcessId");
    finder.GetEprocessOffset("ActiveProcessLinks");
    finder.GetEprocessOffset("ImageFileName");
    
    return 0;
}
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 197
Репутация
8 331
@offsec, а ты следующие части не переводи ещё ?

Я так почитал продолжение, интересно, вот если нужно кому:




Думал по началу попереводить, но потом понял что очень много времени это занимает.
Короче в итоге просто почитал, но статьи не плохие по моему мнению.)
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 197
Репутация
8 331
 

offsec

Уважаемый пользователь
Форумчанин
Регистрация
12.11.2023
Сообщения
22
Репутация
18
@offsec, а ты следующие части не переводи ещё ?

Я так почитал продолжение, интересно, вот если нужно кому:




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

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 197
Репутация
8 331
Похожая ситуация, потом голова от всего пухнит и понимаешь что ничего не знаешь вообще...)
 

offsec

Уважаемый пользователь
Форумчанин
Регистрация
12.11.2023
Сообщения
22
Репутация
18
Похожая ситуация, потом голова от всего пухнит и понимаешь что ничего не знаешь вообще...)
Жизненная жиза, у меня синдром самозванца уже конкретно развитый.
 
Верх Низ