Перейти к содержанию

partoftheworlD

Пользователи+
  • Постов

    2 687
  • Зарегистрирован

  • Посещение

  • Победитель дней

    172

Сообщения, опубликованные partoftheworlD

  1. В 25.11.2016 в 12:35, gmz сказал:

    распаковка:

    trainer_x64.EXE -> в x32_dbg -> CreateProcessA -> breakpoint
    %TEMP%\cetrainers\CETXXXX.tmp копируем trainer_x64.EXE и CET_Archive.dat
    trainer_x64.EXE -> в x32_dbg -> CreateProcessA -> breakpoint -> получаем:
    1 trainer_x64.EXE - реал х64
    2 lua53-64.dll
    3 CET_TRAINER.CETRAINER
    4 defines.lua

    дальше над смотреть дешифро, вариант выше где нашли блок в котором валяется дешифро+мусор - Lol

    ps метод упаковки - еще тот ржач :D

     

     

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

  2. 57 минут назад, Pigsy сказал:

    А если так - брать в руку разное оружие и отсеивать число его урона?


    Это будет нереальным везением, обычно у каждого предмета свой адрес, который лишь подставляется как указатель в ячейку активного оружия.

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

     

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

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

    Проще будет просто модифицировать файл со статами и использовать мод.

  3. 8 часов назад, nedix сказал:

    Как бы определенное нажатие клавиш в игре вызывает код, который отвечает за +1 к скилу. Мне нужно просто самому вызвать этот же код.

    Есть же статья на форуме по реверсу чит-кодов в гта.

  4. В 03.09.2018 в 20:38, temtriss сказал:

    Чисто теоретически для выявления причины БСоДа будет достаточно!

     

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

     

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

  5. Спойлер
    
    template <int XORSTART, int BUFLEN, int XREFKILLER>
    
    class Xorstr
    {
    	Xorstr();
    public:
    	char s[BUFLEN];
    
    	explicit Xorstr(const char * xs);
    	~Xorstr()
    	{
    		for (auto i = 0; i < BUFLEN; i++)
    		{
    			s[i] = 0;
    		}
    	}
    };
    
    template <int XORSTART, int BUFLEN, int XREFKILLER>
    Xorstr<XORSTART, BUFLEN, XREFKILLER>::Xorstr(const char * xs)
    {
    	auto xvalue = XORSTART;
    	auto i = 0;
    	for (; i < (BUFLEN -1) i++)
    	{
    		s[i] = xs[i - XREFKILLER] ^ xvalue;
    		xvalue += 1;
    		xvalue %= 256;
    	}
    	s[BUFLEN - 1] = 0;
    }
    
    #define XOR(a) a

     

  6. 8 часов назад, GlKorol сказал:

    Что вы подразумеваете под нормальной структурой?

    Тебе достаточно найти 1 класс, чтобы получить информацию об игроке.
    Т.е выходишь на класс CBaseEntity/CBasePlayer, через здоровье, бронь, координаты и т.д, а после ищешь где в этой структуре находится имя игрока. Теперь достаточно найти список игроков и гарантированно, что у всех игроков в этом списке по найденному смещению будет располагаться имя игрока. Плюс на github есть исходники движка gold source, так что нахождение разных смещений будет очень простым.

  7. 2 часа назад, GlKorol сказал:

    Есть другие способы?

    Найти нормальную структуру, а от неё выйти на массив со всеми адресами игроков. Так у тебя будут смещений статичные для всех игроков для определенной характеристики/информации по игроку.

  8. 8 часов назад, Alexey594 сказал:

    Это был бы подарок каждому пользователю SC)

    Какой-то жирный подарок, если писать с нуля.


    Ещё один вариант нашел, простейший вариант

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

     

     

  9. В общем я думаю, можно без стима инициализировать интерфейс контроллера, к примеру через ISteamController интерфейс c использованием SteamAPI.

    Думаю именно так и работает контроллер через стим.  Я б сделал, но не на чем тестировать.

  10. 9 минут назад, seilormoon сказал:

    есть m_iPosition и есть m_vPosition, что это может значить? и как посмотреть какие там сохранённые значения, в этой программе!! я в ней не ориентируюсь!

    просто приставка m_ есть и в других вальв игр, кто разбирается в этом, наверняка знает что оно обозначает!

    m_ член

    m_i член с типом int

    m_h член с типом handle

    m_v член с типом vector

    m_f член с типом float

    m_b член с типом bool

     

  11. Но тут же все просто, надо только немного подумать.

    Если переведешь 262148 в hex поймешь в чем дело, 262148 = 40004 т.е id глока(0x4) +0x40000

     

     

    14 часов назад, barsuuk сказал:

    тоже самое абсолютно со всеми скинами и предметами ,вопрос, как быть?

     

    Просто избавиться от 0x40000? Например сделав так, перед выводом id:

    int mwi = _memory->read<int>(WE+Offsets::m_AttributeManager+Offsets::m_Item+Offsets::m_iItemDefinitionIndex); 
    mwi &= 0xFFFF;

    Это валв с новым обновлением так борются с читами изменяющими скины мне кажется, либо готовят что-то новое. Скинов у меня не много, так что покажу на чем было.

     

     

    Спойлер

    image.thumb.png.9a4763a4f7ca926f8ec973f42cc136ed.pngimage.thumb.png.cff89cf3aae92032b0fa3372fbebd92a.pngimage.thumb.png.66b892853ee657868689dfc5db8f2682.pngimage.thumb.png.ff0695f53ef009ad0d8c2ecbaa44f908.png

     

    А, и скрипт, только не уверен, что он вообще тут нужен и так все понятно.

     

    Спойлер
    
    { Game   : csgo.exe
      Version: 
      Date   : 2018-08-23
      Author : Alexander
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(GetWeapon,client_panorama.dll,8B 8E E8 2E 00 00 5E) // should be unique
    alloc(newmem,$1000)
    alloc(hActiveWeapon,$4)
    alloc(dwWeaponEntity, $4)
    alloc(Weapon_ID, $4)
    alloc(Weapon_ID_addr, $4)
    alloc(Weapon_ID_real, $4)
    
    label(code)
    label(return)
    newmem:
    
    code:
        mov ecx,[esi+00002EE8]                // hActiveWeapon
      mov [hActiveWeapon], ecx
      mov eax, "client_panorama.dll"+04C3915C // Entitiy List
      and ecx, FFF
      dec ecx
      imul ecx, 10
      add eax, ecx
      mov eax, [eax]
      mov [dwWeaponEntity]. eax
      add eax, 2D70                           // m_AttributeManager
      add eax, 40                             // m_Item
      add eax, 1EA                            // m_iItemDefinitionIndex
      lea ecx, [eax]
      mov [Weapon_ID_addr], ecx
      mov eax, [eax]
      mov [Weapon_ID_real], eax
      and eax, FFFF
      mov [Weapon_ID], eax
      mov ecx, [hActiveWeapon]
    
      jmp return
    
    GetWeapon:
      jmp newmem
      nop
    return:
    registersymbol(GetWeapon)
    registersymbol(hActiveWeapon)
    registersymbol(Weapon_ID_addr)
    registersymbol(dwWeaponEntity)
    registersymbol(Weapon_ID)
    registersymbol(Weapon_ID_real)
    
    [DISABLE]
    
    GetWeapon:
      db 8B 8E E8 2E 00 00
    
    unregistersymbol(GetWeapon)
    unregistersymbol(hActiveWeapon)
    unregistersymbol(Weapon_ID_addr)
    unregistersymbol(dwWeaponEntity)
    unregistersymbol(Weapon_ID)
    unregistersymbol(Weapon_ID_real)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "client_panorama.dll"+1D80C3
    
    "client_panorama.dll"+1D80AB: 84 C0                    -  test al,al
    "client_panorama.dll"+1D80AD: 74 13                    -  je client_panorama.dll+1D80C2
    "client_panorama.dll"+1D80AF: 8B 07                    -  mov eax,[edi]
    "client_panorama.dll"+1D80B1: 8B CF                    -  mov ecx,edi
    "client_panorama.dll"+1D80B3: 8B 80 60 02 00 00        -  mov eax,[eax+00000260]
    "client_panorama.dll"+1D80B9: FF D0                    -  call eax
    "client_panorama.dll"+1D80BB: 33 F6                    -  xor esi,esi
    "client_panorama.dll"+1D80BD: 84 C0                    -  test al,al
    "client_panorama.dll"+1D80BF: 0F 45 F7                 -  cmovne esi,edi
    "client_panorama.dll"+1D80C2: 5F                       -  pop edi
    // ---------- INJECTING HERE ----------
    "client_panorama.dll"+1D80C3: 8B 8E E8 2E 00 00        -  mov ecx,[esi+00002EE8]
    // ---------- DONE INJECTING  ----------
    "client_panorama.dll"+1D80C9: 5E                       -  pop esi
    "client_panorama.dll"+1D80CA: 83 F9 FF                 -  cmp ecx,-01
    "client_panorama.dll"+1D80CD: 74 16                    -  je client_panorama.dll+1D80E5
    "client_panorama.dll"+1D80CF: 0F B7 C1                 -  movzx eax,cx
    "client_panorama.dll"+1D80D2: C1 E0 04                 -  shl eax,04
    "client_panorama.dll"+1D80D5: 05 4C 91 D3 55           -  add eax,client_panorama.dll+4C3914C
    "client_panorama.dll"+1D80DA: C1 E9 10                 -  shr ecx,10
    "client_panorama.dll"+1D80DD: 39 48 04                 -  cmp [eax+04],ecx
    "client_panorama.dll"+1D80E0: 75 03                    -  jne client_panorama.dll+1D80E5
    "client_panorama.dll"+1D80E2: 8B 00                    -  mov eax,[eax]
    }

     

     

    • Понравилось 1
  12. Попробуй так выйти на структуру игрока/список игроков, потому что тот способ, что используешь ты он и не правильный, и не будет работать корректно(не будет стабильных смещений для указателей на игроков)

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.