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

imaginary

Помогаторы
  • Постов

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

  • Посещение

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

    43

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

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

  2. 15 часов назад, SergBrNord сказал:

    Не понимаю, почему в моменте проверки флага отладчик секции комментариев пишет, что флаг уже вроде как равен 1

    Потому что он у тебя не 1 байт, а захватывает кусочек твоего double, надо писать cmp byte ptr [],* если хочешь проверятть байт

    Попробуй вот такой скрипт:

    Спойлер
    
     { Game   : DP.exe
      Version: 1.0
      Date   : 2019-11-16
      Author : SergBrNord
    }
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    
    aobscanmodule(DPOINTS,DP.exe,DD 5F 04 5F 5E 8B) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
      cmp [edi+90], #6              //Main filter
      jne code
      cmp byte ptr [flag], 0                 //Check flag
      jne code
      mov byte ptr [flag], 1        //Set flag
      fstp st(0)
      fld dword ptr [value]
    
    code:
      fstp qword ptr [edi+04]
      pop edi
      pop esi
      jmp return
    
    flag:
    db 00
    value:
    dd (float)3000000
    
    DPOINTS:
      jmp newmem
    return:
    registersymbol(DPOINTS)
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    DPOINTS:
      db DD 5F 04 5F 5E
    
    unregistersymbol(DPOINTS)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "DP.exe"+A1AE17
    
    "DP.exe"+A1AE04: 89 77 04              -  mov [edi+04],esi
    "DP.exe"+A1AE07: FF 46 08              -  inc [esi+08]
    "DP.exe"+A1AE0A: 5B                    -  pop ebx
    "DP.exe"+A1AE0B: 5F                    -  pop edi
    "DP.exe"+A1AE0C: 5E                    -  pop esi
    "DP.exe"+A1AE0D: 8B E5                 -  mov esp,ebp
    "DP.exe"+A1AE0F: 5D                    -  pop ebp
    "DP.exe"+A1AE10: C2 04 00              -  ret 0004
    "DP.exe"+A1AE13: DD 46 04              -  fld qword ptr [esi+04]
    "DP.exe"+A1AE16: 5B                    -  pop ebx
    // ---------- INJECTING HERE ----------
    "DP.exe"+A1AE17: DD 5F 04              -  fstp qword ptr [edi+04]
    "DP.exe"+A1AE1A: 5F                    -  pop edi
    "DP.exe"+A1AE1B: 5E                    -  pop esi
    // ---------- DONE INJECTING  ----------
    "DP.exe"+A1AE1C: 8B E5                 -  mov esp,ebp
    "DP.exe"+A1AE1E: 5D                    -  pop ebp
    "DP.exe"+A1AE1F: C2 04 00              -  ret 0004
    "DP.exe"+A1AE22: 8B 56 04              -  mov edx,[esi+04]
    "DP.exe"+A1AE25: 5B                    -  pop ebx
    "DP.exe"+A1AE26: 89 57 04              -  mov [edi+04],edx
    "DP.exe"+A1AE29: 5F                    -  pop edi
    "DP.exe"+A1AE2A: 5E                    -  pop esi
    "DP.exe"+A1AE2B: 8B E5                 -  mov esp,ebp
    "DP.exe"+A1AE2D: 5D                    -  pop ebp
    }

     

     

  3. Зачем тебе такие сложности, напиши без всяких char, у тебя же есть строка
     

    Спойлер
    
    #include <Windows.h>
    #include <TlHelp32.h>
    #include <iostream>
    
    
    using namespace std;
    
    int GetProcesByName(wstring name)
    
    {
    	HANDLE snapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	PROCESSENTRY32 pInfo = { 0 }; pInfo.dwSize = sizeof(PROCESSENTRY32);
    	
    	while (Process32Next(snapShot, &pInfo))
    	{
    		if ( pInfo.szExeFile == name)
    		{
    			CloseHandle(snapShot);
    			return pInfo.th32ProcessID;
    		}
    	}
    	CloseHandle(snapShot);
    	return 0;
    }
    	
    
    int main() {
    	
    	int pID = GetProcesByName(L"calculator.exe");
    	cout << pID ;
    	return 0;
    }

     

     

  4. 8 минут назад, ЛАГАРИУМ сказал:

    unregistersymbol(GravityPlayer) registersymbol(sjf)

    вот тут тоже лучше написать unregistersymbol(sjf), а вот в остальном должно работать, так что это ты делаешь что то не верно

  5. В 24.10.2019 в 16:58, Fleynaro сказал:

    где находятся drawindexed

    В directx11 есть такой код вне функции, он получает структуру со слоями, потом, проверяет каждый слой, если слой (адрес) = 0, то не рисует его, а если не 0, то обрабатывает дальше, а потом удаляет, вот, можно поставить слоям нули и они не будут отрисовываться, слои обновляются каждый проход отрисовки (кадр) и их позиция с адресом тоже. Возможно это тебе как то поможет. Но если ты поставишь нули, то слои не будут удаляться, в итоге их много наберётся и они займут память, так что тут нужно смотреть, а если ты уберёшь создание слоя, то будет такая же рассинхронизация и переполнение, потому нужно редактировать содержимое самого слоя ну или искать выше что там указывает количество слоёв и так далее. Найти функцию эту можешь, пройдя отладчиком в какой то функции отрисовки, например отталкиваясь от позиции камеры.

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

  7. 6 часов назад, Alex2411 сказал:

    это получиться многие сотни раз или тысячи надо делать ?

    Нет, ты можешь сделать фильтр что бы уже проверенные адреса которые не ведут к твоей инструкции игнорировались, до call eax сделать внедрение и там задавать условие вроде такого
     

    Спойлер
    
    cmp eax, (не верный адрес)
    je code
    cmp eax, (не верный адрес2)
    je code
    cmp eax, (не верный адрес...)
    je code
    
    nop
    nop <--- и вот сюда можно поставить брякпоинт
    nop
    
    code:
    ...

     

    Я не думаю что у тебя там так много вариантов будет, скорее просто они много раз вызываются

  8. 59 минут назад, Alex2411 сказал:

    как мне узнать какой был еах

    Поставь до call eax брякпоинт и после него, там где тебе нужно проверить eax, потом смотришь значение на первом брякпоинте, запускаешь, и так делаешь до попадания на 2 брякпоинт после запуска первого, и вот какое было значение eax до попадания на 2 брякпоинт, это то что тебе нужно

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

    где есть это визуальное значение - там можно найти и настоящее..

    Конечно! так и есть ☺️, только нужно использовать отладчик, ставить брякпоинты, и в общем с начала может быть сложно, попробуй искать поиском уменьшилось / увеличилось / не изменилось, когда значение так поступает, может быть найдётся настоящее значение, оно не обязательно совпадёт с визуальным, можешь замораживать сколько останется и проверять

  10. Только что, Senpai сказал:

    почему получается 34 мб?

    В комментарии к RegionSize
    "Размер области, начинающейся с базового адреса, в котором все страницы имеют одинаковые атрибуты, в байтах."
    Там ещё есть cb
    "Размер структуры в байтах."
    Посмотри это, хотя я не особо понимаю зачем тебе, если и так можно получить размер рабочей области

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

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

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