void replaceAll(std::string& str, const std::string& from, const std::string& to) {
if(from.empty())
return;
size_t start_pos = 0;
while((start_pos = str.find(from, start_pos)) != std::string::npos) {
str.replace(start_pos, from.length(), to);
start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
}
}
std::string get_random_string(const int len) {
static const char alphanum[] =
"0123456789abcdef";
std::string tmp_s;
tmp_s.reserve(len);
for (int i = 0; i < len; ++i) {
tmp_s += alphanum[rand() % (sizeof(alphanum) - 1)];
}
return tmp_s;
}
string ffffffffffff;
string ass1=TENMISCATE("|/data/data/com.axlebolt.standoff2/cache/libmain.so"
;
string ass2=TENMISCATE("|/data/user/0/com.axlebolt.standoff2/cache/libmain.so"
;
BNM::MONO_STRUCTS::monoDictionary<BNM::MONO_STRUCTS::monoString *, BNM::MONO_STRUCTS::monoString *> *(*old_LIST)(void*);
BNM::MONO_STRUCTS::monoDictionary<BNM::MONO_STRUCTS::monoString *, BNM::MONO_STRUCTS::monoString *> *LIST(void *instance) {
auto ret = old_LIST(instance);
for (int i = 0; i < ret->getSize(); ++i) {
auto entry = ret->entries->at(i);
if (entry.value->get_string().find(TENMISCATE("libmain.so|"
) != std::string::npos) {
const char* valuechar;
auto data = entry.value->get_string();
replaceAll(data,ass1, ""
;
replaceAll(data,ass2, ""
;
valuechar = data.c_str();
ret->Insert(entry.key, BNM::CreateMonoString(valuechar));
}
return ret;
}
}
void*(*old_newDictionaryContains)(...);
void* newDictionaryContains(void*lollll,void *credential,void*Verification,void*DeviceInfo) {
if(lollll != NULL){
monoDictionary<monoString*,monoString*>*dict2=*(monoDictionary<monoString*,monoString*>**)((uint64_t)Verification + 0xC);
*(BNM::MONO_STRUCTS::monoString**)((uint64_t)DeviceInfo + 0xC) = BNM::CreateMonoString(get_random_string(10));
*(BNM::MONO_STRUCTS::monoString**)((uint64_t)DeviceInfo + 0x8) = BNM::CreateMonoString(get_random_string(32));
if(from.empty())
return;
size_t start_pos = 0;
while((start_pos = str.find(from, start_pos)) != std::string::npos) {
str.replace(start_pos, from.length(), to);
start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
}
}
std::string get_random_string(const int len) {
static const char alphanum[] =
"0123456789abcdef";
std::string tmp_s;
tmp_s.reserve(len);
for (int i = 0; i < len; ++i) {
tmp_s += alphanum[rand() % (sizeof(alphanum) - 1)];
}
return tmp_s;
}
string ffffffffffff;
string ass1=TENMISCATE("|/data/data/com.axlebolt.standoff2/cache/libmain.so"
string ass2=TENMISCATE("|/data/user/0/com.axlebolt.standoff2/cache/libmain.so"
BNM::MONO_STRUCTS::monoDictionary<BNM::MONO_STRUCTS::monoString *, BNM::MONO_STRUCTS::monoString *> *(*old_LIST)(void*);
BNM::MONO_STRUCTS::monoDictionary<BNM::MONO_STRUCTS::monoString *, BNM::MONO_STRUCTS::monoString *> *LIST(void *instance) {
auto ret = old_LIST(instance);
for (int i = 0; i < ret->getSize(); ++i) {
auto entry = ret->entries->at(i);
if (entry.value->get_string().find(TENMISCATE("libmain.so|"
const char* valuechar;
auto data = entry.value->get_string();
replaceAll(data,ass1, ""
replaceAll(data,ass2, ""
valuechar = data.c_str();
ret->Insert(entry.key, BNM::CreateMonoString(valuechar));
}
return ret;
}
}
void*(*old_newDictionaryContains)(...);
void* newDictionaryContains(void*lollll,void *credential,void*Verification,void*DeviceInfo) {
if(lollll != NULL){
monoDictionary<monoString*,monoString*>*dict2=*(monoDictionary<monoString*,monoString*>**)((uint64_t)Verification + 0xC);
*(BNM::MONO_STRUCTS::monoString**)((uint64_t)DeviceInfo + 0xC) = BNM::CreateMonoString(get_random_string(10));
*(BNM::MONO_STRUCTS::monoString**)((uint64_t)DeviceInfo + 0x8) = BNM::CreateMonoString(get_random_string(32));