There the anti-cheat does not work, I calmly change the obscured field values, so I need to know how to change the obscured parameterObscured stuff — это codestage античит. Вам придется придумать, как обойти античит.
Вам нужно будет построить структуру для obscured, чтобы изменить значения obscured. Это более продвинутый моддинг и непростая задача для новых моддеров.
Лучший вариант — уделить время изучению моддинга и, по возможности, найти игру, в которой нет античита, для начала.
Codestage anti-cheat is not configured for hidden values because I change the fields as I want and to what I want I do not know how to change the hidden value in the method parameters that's allВы говорите, что знаете, как модифицировать
ObscuredInt цена продажи
Часть obscuredint. Если у вас есть и это не сработало, то это не сработает. Это часть процесса codestage anticheat. Иногда изменение ObscuredInt и т. д. не работает, а иногда работает. Если работает, то хорошо. Если нет, то вам нужно обойти codestage anticheat. Что вам нужно будет выяснить самостоятельно.
How are you trying to modify it? hexpatching the .so file?Codestage anti-cheat is not configured for hidden values because I change the fields as I want and to what I want I do not know how to change the hidden value in the method parameters that's all
What patching? Function hookHow are you trying to modify it? hexpatching the .so file?
Would be easier if i can see your current hook for itWhat patching? Function hook
void (*old_AddOnlineCar)(monoString* prefab, monoString* name, monoString* instanceID, int sellPrice, byte* data);Было бы проще, если бы я мог увидеть ваш текущий крючок для этого.
Yeah you can't modify obscuredint etc that way. You have to make a custom struct to be able to mod it which requires looking at the obscured struct in codestage anticheat.void (*old_AddOnlineCar)(monoString* prefab, monoString* name, monoString* instanceID, int sellPrice, byte* data);
old_AddOnlineCar(CreateString("STRING_B"), CreateString("STRING B"), CreateString("STRING"), 1, nullptr);
old_AddOnlineCar = (void(*)(monoString*, monoString*, monoString*, int, byte*)) getAbsoluteAddress(targetLibName, 0xD5C5F4);
struct ObscuredInt {Yeah you can't modify obscuredint etc that way. You have to make a custom struct to be able to mod it which requires looking at the obscured struct in codestage anticheat.
Russian Car DriftНазвание игры?
struct ObscuredInt {
// static int cryptoKey; // Static field: cryptoKey
int currentCryptoKey; // offset: 0x0
int hiddenValue; // offset: 0x4
bool inited; // offset: 0x8
char pad1[3]; // padding to align next field
int fakeValue; // offset: 0xC
bool fakeValueActive; // offset: 0x10
// char pad2[3]; // more padding if needed
};
ObscuredInt CreateObscuredInt(int value, int cryptoKey) {
ObscuredInt o;
o.currentCryptoKey = cryptoKey;
o.hiddenValue = value ^ cryptoKey;
o.inited = true;
o.fakeValue = value;
o.fakeValueActive = false;
return o;
}
thank you very much and you don't know how to pass the parameter byte[] data and data type of the garagecardataTry using this as a reference, correct/modify it if necessary.
C++:struct ObscuredInt { // static int cryptoKey; // Static field: cryptoKey int currentCryptoKey; // offset: 0x0 int hiddenValue; // offset: 0x4 bool inited; // offset: 0x8 char pad1[3]; // padding to align next field int fakeValue; // offset: 0xC bool fakeValueActive; // offset: 0x10 // char pad2[3]; // more padding if needed }; ObscuredInt CreateObscuredInt(int value, int cryptoKey) { ObscuredInt o; o.currentCryptoKey = cryptoKey; o.hiddenValue = value ^ cryptoKey; o.inited = true; o.fakeValue = value; o.fakeValueActive = false; return o; }
When using CreateObscuredInt make sure you have the right crypto key. For testing, passing 1 or 2 should work
for data which is a byte[] type, you can try defining it as:thank you very much and you don't know how to pass the parameter byte[] data and data type of the garagecardata
monoArray<uint8_t>* data
This is a custom data type, I don't even know if it is used, but in the il2cpp tool this method works perfectly, please show me if it is not difficult for you how to completely pass the data parameter and also for verification how to use this data type GarageCarDataдля данных типа byte[] можно попробовать определить их как:
C++:monoArray<uint8_t>* данные
И затем, предположив, что вы возвращаете только GarageCarData и не взаимодействуете с ним, вы можете просто вернуть его как void*
Извините, если я не понял, что вы сказали. Скажите мне, если я понял, и добавьте больше контекста.
We use cookies to personalize content and ads, to provide social media features and to analyse our traffic. We also share necessary information with our advertising and analytics partners to optimize your experience on our site.
Learn more about cookies
We use cookies to personalize content and ads, to provide social media features and to analyse our traffic. We also share necessary information with our advertising and analytics partners to optimize your experience on our site.
Learn more about cookies