👉👈
Пользователь
Статус
Онлайн
Регистрация
16 Янв 2017
Сообщения
418
Реакции[?]
144
Поинты[?]
77K
В данной теме я предоставлю external auto offset finder для пабга мобайла. Оффсеты нужны для того, чтобы чит, созданный для мобилки, работал с каждой обновой. Этот софт помогает быстро и без посторонней помощи обновить оффсеты и продолжить играть с самой свежей обновой.


Как использовать?
  1. Скомпилируйте приложение (соберите билд в х64 release);
  2. Перейдите в папку release;
  3. Откройте SDK в приложении (с помощью cmd или перетащите файл SDK в приложение);
  4. Впишите название;
  5. Готово.

C++ исходный код (source):
C++:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include <string>
#include <regex>

using namespace std;


void FindSdkOffset(const string& SdkPath, const string& ClassName, const string& SearchString, vector<string>& results, string VarName) {
    ifstream file(SdkPath, ios::binary);
    if (!file) {
        cout << "Error opening file: " << SdkPath << endl;
        return;
    }

    bool ClassNameFound = false;

    string line;
    while (getline(file, line)) {

        if (!ClassNameFound && line.find(ClassName) != string::npos) {
            ClassNameFound = true;
            continue;
        }

        if (ClassNameFound && line.find(SearchString) != string::npos) {
            std::regex offsetRegex("Offset: (0x[0-9a-fA-F]+),");
            std::smatch offsetMatch;

            if (std::regex_search(line, offsetMatch, offsetRegex)) {
                if (offsetMatch.size() == 2) {
                    std::string offsetValue = "const uintptr_t " + VarName + " = " + offsetMatch[1].str() + ";";
                    results.push_back(offsetValue);
                }
                else {
                    std::cout << "Invalid offset match." << std::endl;
                }
            }
            else {
                std::cout << "Offset not found in the input string." << std::endl;
            }

            break;
        }
    }

    file.close();
}
int main(int argc, const char* argv[]) {
    string SdkPath = argv[1];
    string ClassName_1 = "Class: StaticMeshComponent.MeshComponent.PrimitiveComponent.SceneComponent.ActorComponent.Object";
    string SearchString_1 = "int NoneAIGameTime;//[Offset:";
    vector<string> results_1;
    FindSdkOffset(SdkPath, ClassName_1, SearchString_1, results_1, "MinLOD");


    std::vector<std::tuple<std::string, std::string, std::string>> formats = {
        {"Class: World.Object", "GameStateBase* GameState;//[Offset:", "GameState"},
        {"Class: STExtraGameStateBase.UAEGameState.LuaGameState.GameState.GameStateBase.Info.Actor.Object", "int AlivePlayerNum;//[Offset:", "AlivePlayerNum"},
        {"Class: GameState.GameStateBase.Info.Actor.Object", "int ElapsedTime;//[Offset:", "ElapsedTime"},
        {"", "int NoneAIGameTime;//[Offset: ", "NoneAIGameTime"},
        {"", "int PlayerNum;//[Offset:", "PlayerNum"},
        {"", "int PlayerNum;//[Offset:", "RealPlayerNum"},
        {"", "int AliveTeamNum;//[Offset:", "AliveTeamNum"},
        {"Class: STExtraGameStateBase.UAEGameState.LuaGameState.GameState.GameStateBase.Info.Actor.Object", "int PlayerNumPerTeam;//[Offset:", "PlayerNumPerTeam"},
        {"Class: STExtraGameStateBase.UAEGameState.LuaGameState.GameState.GameStateBase.Info.Actor.Object", "FString GameModeID;//[Offset: ", "GameModeID"},
        {"", "int CurCircleWave;//[Offset: ", "CurCircleWave"},
        {"", "int GameReplayType;//[Offset:", "GameReplayType"},

        {"lass: Pawn.Actor.Object", "PlayerState* PlayerState;//[Offset:", "PlayerState"},
        {"Class: UAEPlayerState.LuaPlayerState.PlayerState.Info.Actor.Object", "int Kills;//[Offset:", "PlayerKills"},
        {"Class: UAEPlayerState.LuaPlayerState.PlayerState.Info.Actor.Object", "FString Nation;//[Offset:", "PlayerNation"},
        {"Class: UAEPlayerState.LuaPlayerState.PlayerState.Info.Actor.Object", "int TeamID;//[Offset:", "PlayerTeamID"},
        {"Class: UAEPlayerState.LuaPlayerState.PlayerState.Info.Actor.Object", "int PlayerLevel;//[Offset:", "PlayerLevel"},
        {"Class: UAEPlayerState.LuaPlayerState.PlayerState.Info.Actor.Object", "FString PlayerUID;//[Offset:", "PlayerPlayerUID"},

        {"Class: PlayerState.Info.Actor.Object", "FString PlayerName;//[Offset:", "PlayerName"},
        {"Class: STExtraPlayerState.UAEPlayerState.LuaPlayerState.PlayerState.Info.Actor.Object", "float PlayerHealth;//[Offset:", "PlayerHealth"},



        {"Class: World.Object", "Level* PersistentLevel;//[Offset:", "PersistentLevel"},
        {"Class: World.Object", "NetDriver* NetDriver;//[Offset:", "NetDriver"},
        {"", "NetConnection* ServerConnection;//[Offset:", "ServerConnection"},
        {"Class: Player.Object", "PlayerController* PlayerController;//[Offset", "PlayerController"},
        {"", "Pawn* AcknowledgedPawn;//[Offset:", "AcknowledgedPawn"},
        {"", "SceneComponent* RootComponent;//[Offset:", "RootComponent"},

        {"Class: STExtraCharacter.UAECharacter.Character.Pawn.Actor.Object", "uint64 CurrentStates;//[Offset:", "CurrentStates"},
        {"Class: CharacterMovementComponent.PawnMovementComponent.NavMovementComponent.MovementComponent.ActorComponent.Object", "Vector LastUpdateVelocity;//[Offset:", "LastUpdateVelocity"},
        {"Class: UAECharacter.Character.Pawn.Actor.Object", "int TeamID;//[Offset: ", "TeamId"},
        {"Class: UAECharacter.Character.Pawn.Actor.Object", "bool bEnsure;", "IsBot"},
        {"Class: UAECharacter.Character.Pawn.Actor.Object", "FString PlayerName;//[Offset:", "Name"},
        {"Class: UAECharacter.Character.Pawn.Actor.Object", "FString Nation;//[Offset: ", "Nation"},
        {"STExtraCharacter.UAECharacter.Character.Pawn.Actor.Object", "bool bDead;//(ByteOffset: 0, ByteMask: 1, FieldMask: 1)[Offset:", "IsDead"},
        {"", "FString PlayerUID;//[Offset:", "PlayerUID"},
        {"Class: STExtraCharacter.UAECharacter.Character.Pawn.Actor.Object", "float Health;//[Offset:", "Health"},
        {"Class: STExtraCharacter.UAECharacter.Character.Pawn.Actor.Object", "float HealthMax;//[Offset:", "HealthMax"},
        {"", "float NearDeathBreath;//[Offset: ", "NearDeathBreath"},
        {"", "STCharacterNearDeathComp* NearDeatchComponent;//[Offset:", "NearDeatchComponent"},
        {"", "float BreathMax;//[Offset:", "BreathMax"},

        {"Class: Controller.Actor.Object", "Rotator ControlRotation;//[Offset: ", "ControlRotation"},
        {"Class: SceneComponent.ActorComponent.Object", "Vector ComponentVelocity;//[Offset:", "ComponentVelocity"},
        {"Class: STExtraCharacter.UAECharacter.Character", "STExtraVehicleBase* CurrentVehicle;//[Offset:", "CurrentVehicle"},
        {"Class: Actor.Object", "RepMovement ReplicatedMovement;//[Offset:", "ReplicatedMovement"},

        {"Class: SceneComponent.ActorComponent.Object", "Vector RelativeLocation;//[Offset:", "RelativeLocation"},
        {"Class: SceneComponent.ActorComponent.Object", "Rotator RelativeRotation;//[Offset:", "RelativeRotation"},

        {"Character.Pawn.Actor.Object", "SkeletalMeshComponent* Mesh;//[Offset:", "Mesh"},
        {"Class: WeaponMeshCfg", "enum meshType;//[Offset", "BodyAddv"},
        {"Class: StaticMeshComponent.MeshComponent.PrimitiveComponent.SceneComponent.ActorComponent.Object", "int MinLOD;//[Offset: ", "MinLOD"},

        {"", "STExtraWeapon* CurrentWeaponReplicated;//[Offset:", "CurrentWeaponReplicated"},
        {"", "CharacterWeaponManagerComponent* WeaponManagerComponent;", "WeaponManagerComponent"},

        {"", "STExtraWeapon* CurrentReloadWeapon;//[Offset:", "CurrentReloadWeapon"},
        // {"", "", "CurrentWeapon"},
        {"", "STExtraShootWeaponComponent* ShootWeaponComponent;//[Offset: ", "ShootWeaponComponent"},
        {"Class: STExtraShootWeaponComponent.WeaponLogicBaseComponent.ActorComponent.Object", "STExtraShootWeapon* OwnerShootWeapon;//[Offset: ", "OwnerShootWeapon"},
        {"Class: STExtraShootWeapon.STExtraWeapon.LuaActor.Actor.Object", "int CurBulletNumInClip;//[Offset:", "CurBulletNumInClip"},
        {"Class: STExtraShootWeapon.STExtraWeapon.LuaActor.Actor.Object", "int CurMaxBulletNumInOneClip;//[Offset:", "CurMaxBulletNumInOneClip"},
        {"", "ShootWeaponEntity* ShootWeaponEntityComp;//[Offset:", "ShootWeaponEntity"},
        {"", "ShootWeaponEffectComponent* ShootWeaponEffectComp;//[Offset:", "ShootWeaponEffectComp"},

        {"Class: ShootWeaponEffectComponent.WeaponEffectComponent.WeaponLogicBaseComponent.ActorComponent.Object", "float CameraShakeInnerRadius", "CameraShakeInnerRadius"},
        {"", "float CameraShakeOuterRadius;//[Offset: ", "CameraShakeOuterRadius"},
        {"", "float CameraShakFalloff;//[Offset:", "CameraShakFalloff"},
        {"", "CharacterOverrideAttrData[] CharacterOverrideAttrs;//[Offset:", "CharacterOverrideAttrs"},

        {"", "float BulletFireSpeed;//[Offset:", "BulletFireSpeed"},
        {"", "float BulletMomentum;//[Offset: ", "BulletMomentum"},
        {"", "float BulletRange;//[Offset:", "BulletRange"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float BaseImpactDamage;//[Offset:", "BaseImpactDamage"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float VehicleDamageScale;//[Offset:", "VehicleDamageScale"},
        {"Class: STExtraFlareGunBullet.Actor.Object", "float LaunchGravityScale;//[Offset: ", "LaunchGravityScale"},

        {"", "loat ShootInterval;//[Offset: ", "ShootInterval"},
        {"", "bool bHasSingleFireMode;//(ByteOffset: 0, ByteMask: 1, FieldMask: 255)[Offset:", "bHasSingleFireMode"},
        {"", "bool bHasAutoFireMode;//(ByteOffset: 0, ByteMask: 1, FieldMask: 255)[Offset:", "bHasAutoFireMode"},
        {"", "bool bHasBurstFireMode;//(ByteOffset: 0, ByteMask: 1, FieldMask: 255)[Offset:", "bHasBurstFireMode"},
        {"", "float BurstShootInterval;//[Offset:", "BurstShootInterval"},
        {"", "float ReloadRate;//[Offset:", "ReloadRate"},

        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float AccessoriesVRecoilFactor;//[Offset:", "AccessoriesVRecoilFactor"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float AccessoriesHRecoilFactor;//[Offset:", "AccessoriesHRecoilFactor"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float AccessoriesRecoveryFactor;//[Offset:", "AccessoriesRecoveryFactor"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float ShotGunCenterPerc;//[Offset:", "ShotGunCenterPerc"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float ShotGunVerticalSpread;//[Offset:", "ShotGunVerticalSpread"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float ShotGunHorizontalSpread;//[Offset:", "ShotGunHorizontalSpread"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float GameDeviationFactor;//[Offset:", "GameDeviationFactor"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float GameDeviationAccuracy;//[Offset:", "GameDeviationAccuracy"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float AccessoriesDeviationFactor;//[Offset:", "AccessoriesDeviationFactor"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float VehicleWeaponDeviationAngle;//[Offset:", "VehicleWeaponDeviationAngle"},
        {"Class: ShootWeaponEntity.WeaponEntity.WeaponLogicBaseComponent.ActorComponent.Object", "float RecoilKickADS;//[Offset:", "RecoilKickADS"},

        {"Class: VehicleCommonComponent.VehicleComponent.LuaActorComponent.ActorComponent.Object", "float HP;//[Offset:", "HP"},
        {"Class: VehicleCommonComponent.VehicleComponent.LuaActorComponent.ActorComponent.Object", "float HPMax;//[Offset: ", "HPMax"},
        {"Class: VehicleCommonComponent.VehicleComponent.LuaActorComponent.ActorComponent.Object", "float Fuel;//[Offset:", "Fuel"},
        {"Class: VehicleCommonComponent.VehicleComponent.LuaActorComponent.ActorComponent.Object", "float FuelMax;//[Offset:", "FuelMax"},
        {"Class: STExtraWheeledVehicle.STExtraVehicleBase.Pawn.Actor.Object", "STExtraVehicleMovementComponent4W* VehicleMovement;//[Offset: ", "VehicleMovement"},
        {"Class: STExtraVehicleBase.Pawn.Actor.Object", "VehicleCommonComponent* VehicleCommon;//[Offset:", "VehicleCommon"},
        {"Class: STExtraVehicleBase.Pawn.Actor.Object", "float lastForwardSpeed;//[Offset:", "lastForwardSpeed"},

        {"Class: PickUpListWrapperActor.PickUpWrapperActor.UAENetActor.LuaActor.Actor.Object", "PickUpItemData[] PickUpDataList;//[Offset:", "PickUpDataList"}, /////

        {"", "STExtraPlayerController* STPlayerController;//[Offset", "STPlayerController"},

        {"", "PlayerCameraManager* PlayerCameraManager;//[Offset:", "PlayerCameraManager"},
        {"", "HUD* MyHUD;//[Offset:", "MyHUD"},

        {"", "CameraCacheEntry CameraCache;//[Offset:", "CameraCache"},

        {"", "float ScopeFov;//[Offset: ", "ScopeFov"},
        {"", "CameraComponent* ScopeCameraComp;//[Offset:", "ScopeCameraComp"},
        {"", "bool IsFPPGameMode;//(ByteOffset: 0, ByteMask: 1, FieldMask: 255)[Offset:", "IsFPPGameMode"},
        {"", "HitPerformData HitPerform;//[Offset:", "HitPerform"},
        {"", "float SwitchWeaponSpeedScale;//[Offset:", "SwitchWeaponSpeedScale"},
        {"", "CharacterParachuteComponent* ParachuteComponent", "CharacterParachuteComponent"},
        {"", "CurrentFallSpeed;//[Offset:", "CurrentFallSpeed"},

    };



    if (!results_1.empty()) {
        string XXSDK_OUT;
        cout << "Enter the output file name: ";
        cin >> XXSDK_OUT;
        XXSDK_OUT =XXSDK_OUT + ".h";

        ofstream output(XXSDK_OUT);
        if (!output) {
            cerr << "Error creating output file." << endl;
            return 1;
        }


        for (const auto& format : formats) {
            vector<string> results_2;
            FindSdkOffset(SdkPath, std::get<0>(format), std::get<1>(format), results_2, std::get<2>(format));

            for (const string& result : results_2) {
                //output <<"//" << std::get<0>(format) << "\t -> \t" << std::get<1>(format) << endl;
                output << result  << endl /*<< endl*/;
            }
        }

        output.close();

        cout << "Results saved to: " << XXSDK_OUT << endl;
    }
    else {
        cout << "No results found" << endl;
    }
    system("pause");
}
 
Последнее редактирование:
Сверху Снизу