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

Maxs

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

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

  • Посещение

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

    2

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

  1. Игра сделана на Unity3d. В каталоге с игрой обычно одна папка "название игры_Data" в ней папка "Managed" и там обязательно есть файл "Assembly-CSharp.dll" Это .net сборка, которая содержит практически всю логику игры и её объектов. Обычно она декомпилируется, но часто её обратно перекомпоновать нельзя из-за большого количества ошибок. Если научится загружать .net сборки в саму игру, то предположительно можно наделать много интересных читов к игре сделанной на Unity3d.

    У меня уже же есть два скрипта, которые могут работать на играх Unity3d с видом от первого лица. Это полет камерой и телепорт.

    Я сегодня пол дня проковырялся и ни как не могу подгрузить Cheat.dll (.net сборку) с читами изнутри этой игры.

    По идее надо выполнить код ниже внутри самой игры с вызовом функции (на C++ аналог функции - точки входа в dll-ку)


    Assembly a = Assembly.Load("Cheat.dll");
    System.Type myType = a.GetType("Cheats");
    MethodInfo myMethod = myType.GetMethod("Main");
    object obj = System.Activator.CreateInstance(myType);
    myMethod.Invoke(obj, null);

    Я вызывал этот код из самой Unity3d на тестовом проекте и dll-ка дотнетовская загружалась, чит работал, надпись зеленная горела. Значит осталось как-то исполнить этот код изнутри самой игры... Если кто в курсе как это сделать, то дайте знать.

    Что делает вызов Майн-функции? Эта функция должна создать пустой GameObject и прицепить на него него поведение-скрипт позволяющий сохранять и загружать позиции.


    public class Cheats{
    public static void Main(){
    GameObject go = new GameObject();
    go.name = "Cheats";
    go.AddComponent<Teleport>();
    }
    }

    Ну и вот класс телепорта в этой ддлке, который предположительно должен заработать или хотя бы загореться зеленная надпись в левом верхнем углу экрана. Функции Update() и OnGUI() уже будут вызываться самой игрой за кадр отрисовки.


    using UnityEngine;
    using System.Collections;
    public class Teleport : MonoBehaviour {
    Transform trCharacter;
    #region MonoBehaviour
    void Start() {
    trCharacter = FindFirstCharacterController().transform;
    }
    void OnGUI(){
    GUI.color = Color.green;
    GUILayout.Label("Gamehacklab.ru");
    }
    void Update() {
    //Save : "KeyCode.F1"
    if(Input.GetKey(KeyCode.F1)){
    if(trCharacter == null){
    trCharacter = FindFirstCharacterController().transform;
    }
    if(trCharacter != null){
    PlayerPrefs.SetString("Character Position", Vector3ToString(trCharacter.position));
    PlayerPrefs.SetString("Character Rotation", Vector3ToString(trCharacter.eulerAngles));
    }
    }
    //Load : "KeyCode.F2"
    if(Input.GetKey(KeyCode.F2)){
    if(trCharacter == null){
    trCharacter = FindFirstCharacterController().transform;
    }
    if(trCharacter != null && PlayerPrefs.HasKey("Character Position") && PlayerPrefs.HasKey("Character Rotation")){
    trCharacter.position = StringToVector3(PlayerPrefs.GetString("Character Position"));
    trCharacter.eulerAngles = StringToVector3(PlayerPrefs.GetString("Character Rotation"));
    }
    }
    }
    #endregion
    CharacterController FindFirstCharacterController(){
    Object[] gos = GameObject.FindObjectsOfType(typeof(GameObject));
    foreach (Object item in gos) {
    if((item as GameObject).GetComponent<CharacterController>() != null){
    return (item as GameObject).GetComponent<CharacterController>();
    }
    }
    return null;
    }
    Vector3 StringToVector3(string argString){
    string[] values = argString.Split(';');
    return new Vector3 (float.Parse(values[0]), float.Parse(values[1]),float.Parse(values[2]));
    }
    string Vector3ToString(Vector3 argVector3){ return string.Format("{0};{1};{2}", argVector3.x, argVector3.y, argVector3.z);}
    }

    -----

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

    Пили видос по Unity3D :-D

  2. Xipho, вообще, я хочу научиться искать и взламывать в играх все :)

    Но в данном случае я спрашивал именно про отдачу (No Recoil). То есть, структура ведь большая, как можно понять/определить, какое значение отвечает за отклонение ствола при стрельбе?

    Нопай инструкции по очереди, когда увидишь что после очередного нопа выключилась отдача - запомни интрукцию, перезапусти игру, вернись к этой инструкции и нопай все типо mos eax,[esi+1]

  3. Эм... Watch Dogs? Вот я над ним и потею последнее время... Хотя успел пройти бОльшую часть игры, но только недавно начал взламывать... :D

    Я использую VEH отладчик (В главном окне СЕ - кнопка "Опции" - справа, под значком CE, далее в открывшемся окне - "Параметры отладчика", и в "Методе отладки" переключаем на нужный отладчик)

    тоже ставлю этот отладчик если игра ругается или вообще крашит !!

    Спасибо за инфу, коллеги.

    Эм... Watch Dogs? Вот я над ним и потею последнее время... Хотя успел пройти бОльшую часть игры, но только недавно начал взламывать... :D

    Я использую VEH отладчик (В главном окне СЕ - кнопка "Опции" - справа, под значком CE, далее в открывшемся окне - "Параметры отладчика", и в "Методе отладки" переключаем на нужный отладчик)

    Интересно, какая инструкция отвечает за изменение кол. патрон... как думаешь?

    7db554d9a34b.png

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

    http://www.cyberforu...read520030.html

    http://cheaton.ru/f3...dlya-dayz-8343/

    http://www.cyberforu...ead1068560.html

    Как то все страшно) Есть на эту тему уроки в видео-формате?

    Через "байты" не оптимальнее работать или я путаю понятия?

    Сигнатура это вроде бы работа с офсетами... :sleep:

    Во всяком случае, мне нужен как то в кратце понять как появился этот код


    ProcessName='PlantsVsZombies.exe';//Процесс Игры
    Adress = $0048B35C ; //Адрес по которому будет производиться запись сигнатуры байт
    SignatyreOn: array[0..3] of Byte = ($83,$47,$24,$67);//Байты для записи в процесс игры
    SignatyreOFF: array[0..3] of Byte = ($83,$47,$24,$01);//Байты для записи в процесс игры

    Откуда взялись?

    SignatyreOn: array[0..3] of Byte = ($83,$47,$24,$67);//Байты для записи в процесс игры

    SignatyreOFF: array[0..3] of Byte = ($83,$47,$24,$01);//Байты для записи в процесс игры

  5. Доброго времени суток, господа. Натолкнулся на такой камень сегодня... Witch Docs при поставке бряка адреса на чтения/запись (дабы получить какие-то инструкции) вылетает. Не понимаю в чем проблема. Это CE создает краш игры или это специальная защита?

    Как и чем лечить? O_O

    P.S. Сорь если тема баян.

  6. Всё просто, ищешь значение float.

    Находишь:


    WormsMayhem.luaopen_table+3293B5 - D9 9E F0000000 - fstp dword ptr [esi+000000F0]

    Чуть выше заменяем


    WormsMayhem.luaopen_table+3293A7 - DC 35 F8A58100 - fdiv qword ptr [WormsMayhem.MoviePlayerPC::MoviePlayerPC+5C045]

    На умножение на 0(0 берём из кода чуть далее):


    WormsMayhem.luaopen_table+3293A7 - DC 0D AC237600 - fmul qword ptr [WormsMayhem.luaopen_table+32940C]

    Таким образом при каждом вычислении значения перегрева он умножается на 0 )))

    Результат:

    2bf9648d056025af0733e83345fa68b1.png

    И сама таблица

    Благодарю тебя за помощь.

    Лайкнуть почему-то не могу, пишет "

    Вы исчерпали лимит положительных оценок на сегодня

    "

  7. РАЗ

    ДВА

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

    По первой ссылке... довольно странный код...

    Я думал запись значение в адрес, сообственно будет проходить через адрес+массив из офсетов(типо 5745646+56+2a+35)

    А тут используются, какие-то байты...


    ProcessName='PlantsVsZombies.exe';//Процесс Игры
    Adress = $0048B35C ; //Адрес по которому будет производиться запись сигнатуры байт
    SignatyreOn: array[0..3] of Byte = ($83,$47,$24,$67);//Байты для записи в процесс игры

    SignatyreOFF: array[0..3] of Byte = ($83,$47,$24,$01);//Байты для записи в процесс игры
    [size=4]

    Можно какую инфу по работе с байтами найти? или байты и есть офсеты?

  8. Movss - Переслать одиночное короткое вещественное значение.

    movss [NNN+NNNNNNN],100- ошибочно написано, так как мы не можем писать 100, мы должны взять значение из переменной типо xmm1 esx aex и т.д.

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

    ИМХО.

    Читал тут - Ссылка

  9. Привет. Тут довольно легко, нужно создать скрипт и пропиши туда:

    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    luacall(speedhack_setSpeed(0.30)) //Slow motion
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    luacall(speedhack_setSpeed(1)) //Normal Speed
    

     

    По активации скрипта будет работать спидхак, по диактивации будет все как прежде.

    P.S. Надеюсь ты знаешь как ставить горячие клавиши для активации скриптов. :-D

    P.S.S. Лайк если помог 8-)

    • Плюс 4
  10. http://www.cheatengi...fo.php?tid=1315 самой игры нет - вон по формуле найди адрес в артмани,а после уже в СЕ накрутишь скрипт.

    Не удалось скачать. Да мне и не интересно, качать что либо. Мне интересно, каким способом самому найти?

    P.s. Отсеивание(стала больше/меньше) не помогает, там даже после 20 шагов адресов 2000 остается.

  11. Добрый день, форумчани. У меня проблема. В игре Worms: Ultimate Mayhem - Deluxe Edition есть возможность создать свое супер оружие, но чем быльше мы добавляем урона, тем больше датчик перегрузки зашкаливает(показано на видео).

    http://youtu.be/cEZbSTJ7VRM

    Вопрос: как заставить этот датчик заморозиться на нуле, чтобы можно было у оружия выкрутить все настройки на максимум?

    P.S. Искал его значение отсеиванием - толку 0.

    77400a9fff92.png

  12. Люди, я столкнулся с проблемой, короче когда я делаю трейнер в CE 1.6 он его нормально скомперирует, но когда запускаеш его ОН НЕ ПОЕВЛЯЕТСЯ НО В ПРОЦЕСАХ ОН ЕСТЬ АШ 5 раз(смотрите скрин.)!

    48dc558bd6afcf02900bd817bf113787.jpg

    Пожалуйста помогите!!!

    П.С когда делаю трейнер в СЕ 5.6 все нормально, но к сожиленюю он мне не нравится так как там мало функций.

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

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

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