GameHackLab[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти
    1. Главная
    2. Inode
    • Профиль
    • Подписки 1
    • Подписчики 0
    • Темы 2
    • Сообщения 4
    • Группы 0

    Inode

    @Inode

    0
    Репутация
    3
    Просмотры профиля
    4
    Сообщения
    0
    Подписчики
    1
    Подписки
    Регистрация
    Последнее посещение

    Inode Отписаться Подписаться

    Недавние сообщения Inode

    • Вызов игровой функции, принимающей в качестве аргумента массив или указатель на него

      Здравствуйте, пытаюсь вызвать функцию в одной игре с помощью C++, раньше эта игра не была зашифрована(можно было спокойно изменять Assembly-CSharp.dll), но сейчас игра уже IL2CPP, поэтому у меня есть Assembly-CSharp.dll старой версии этой игры. Вот как на C# задается функция(SendMessage), которую я хочу вызвать(повторюсь, она из незашифрованной версии игры). Cразу говорю, вызывать ее на C# для меня не вариант.

      			this._connectionManager.SendMessage(new NetworkMessage
      			{
      				MessageType = MessageType.InputBuildRequest,
      				Content = new InputBuildRequest
      				{
      					Angle = angle,
      					BuildType = (uint)this._buildingDef.EntityType,
      					Id = 0,
      					TestPass = false,
      					X = vector.x,
      					Y = vector.y
      				}
      

      А вот как выглядит InputBuildRequest:

      public InputBuildRequest(InputBuildRequest other) : this()
      {
      	this.id_ = other.id_;
      	this.buildType_ = other.buildType_;
      	this.x_ = other.x_;
      	this.y_ = other.y_;
      	this.angle_ = other.angle_;
      	this.testPass_ = other.testPass_;
      	this._unknownFields = UnknownFieldSet.Clone(other._unknownFields);
      }
      

      В дампе эта функция выглядит следующим образом:

          {
            "Address": 3252048,
            "Name": "Game.Managers.ConnectionManager.ConnectionManager$$SendMessage",
            "Signature": "void Game_Managers_ConnectionManager_ConnectionManager__SendMessage (Game_Managers_ConnectionManager_ConnectionManager_o* __this, ServerDefinitions_NetworkMessage_o* message, const MethodInfo* method);",
            "TypeSignature": "viii"
          }
      

      Передать в нее указатель на класс я могу(т.е. первый аргумент и третий тоже), но второй это и есть тип постройки, который я не понимаю как передать. Также я прикрепил скрины того, как она выглядит в ассемблере.
      Вот так выглядит на C# вызов, который я хочу осуществить , но уже на C++:

      			this._connectionManager.SendMessage(new NetworkMessage
      			{
      				MessageType = MessageType.InputBuildRequest,
      				Content = new InputBuildRequest
      				{
      					Angle = 0.3926991f,
      					BuildType = 23U,
      					Id = 0,
      					TestPass = false,
      					X = 1f,
      					Y = 20f
      				}
      			});
      

      Может мне кто-то помочь сделать это, потому что функция выглядит очень непонятно, как с этим что-то делать у меня 0 идей.8f31e9f8-ebbe-401a-af66-451c9a7de0b8-image.png

      написал в Взлом игр (начинающим)
      InodeI
      Inode