Регистрация
24 Июл 2013
Сообщения
76
Репутация
0
Спасибо
0
Монет
0
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));
 
код приведен неполный, не хватает инклудов и обрезана последняя функция (newDictionaryContains)

функция replaceAll тупо производит замену символов от и до указанного индекса в переданной строке, примитивная фигня которую можно было сделать на regex

функция get_random_string возвращает случайную строку заданной дляны, наполненную символами шестнадцатиричного набора (0-f)

лямбда BNM::MONO_STRUCTS::monoString, вроде бы, собирает названия всех объектов из жестко вписанной в код библиотеки (.so)

метод *old_newDictionaryContains приведен в виде void-заглушки
 
Ладно уж джава скрипт не сложный...
 
Назад
Сверху