Всичко за правенето на уеб страници и езици за програмиране.
ivanovbg - майстор
Някаква идея за реверсинжинеринг на този файл? Програма писана на джава е.

Прикачен файл

program.rar
(71.96 KиБ) Свален 70 пъти
Lisko - майстор
Нещо за телефон изглежда. Но нямам идея как да се ревърсне.
Gnus - специалист
$ file program.bin
program.bin: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, stripped
Показва го като .so файл
Като го рагледах, стигнах до извода, че това е някаква програма за автодиагностика, която си свалил или купил оттук: http://www.x431.com .
Как стигна до извода, че е джава и за какво ти е да я реверс-инженерваш?
ivanovbg - майстор
Позна :-D
Как се отваря .so файла да се види кода? Искам да мога да правя промени в него. Отварям го с 7зип и виждам кое искам да променя, но после няма как да го сглобя.
Нямам проблеми с отключването,а искам да си оправям някои бъгове, вместо да чакам китайците.

Със самото апк вече се оправих. Подредих си иконките, увеличих си броя на показваните величини. Заключих си го към кутийката и други екстри.

Можеш ли да помогнеш? Ако искаш на лични.
ivanovbg - майстор
Някаква идея какво точно прави тази подпрограма:
// Address range: 0x108c2 - 0x108db
int32_t function_108c2(int32_t * a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7) {
int32_t v1 = (int32_t)a1;
*a1 = v1;
*(int32_t *)(v1 + 4) = a3;
*(int32_t *)(v1 + 8) = a4;
*(int32_t *)(v1 + 12) = g226;
*(int32_t *)(v1 + 16) = g227;
*(int32_t *)(v1 + 20) = g228;
*(int32_t *)(v1 + 24) = g229;
return v1 + 28;
}

// Address range: 0x108dc - 0x10997
int32_t cal_digest_context(int32_t a1, char * a2, int32_t a3, int32_t a4, int32_t a5) {
int32_t v1 = (int32_t)a2;
int32_t v2 = v1; // R1
int32_t v3 = g228; // 0x108dc
int32_t v4 = g229; // 0x108dc
int32_t v5 = 1; // R5
g228 = 142;
g229 = 2;
int32_t v6 = 92; // R3
int32_t v7 = v1; // 0x10906
int32_t v8 = 1; // 0x10902
int32_t v9 = 142; // 0x108fe
int32_t v10 = 2; // 0x10904
int32_t v11 = &g6; // 0x10902
int32_t v12 = 174; // 0x108f4
int32_t v13 = 92; // 0x108f4
// branch -> 0x108f4
while (true) {
int32_t v14 = v13 ^ v12; // 0x108f4
int32_t v15 = (int32_t)*(char *)(v11 + 19) ^ v14; // 0x108f8
char v16 = v15;
if (v10 == 1) {
// 0x108fe
v16 = v15 ^ v9;
// branch -> 0x10900
}
// 0x10900
g229 = v10 - 1;
*(char *)v7 = v16;
int32_t v17 = g228; // 0x10908
int32_t v18 = v5 + v2; // 0x1090a
v2 = v18;
int32_t v19 = v6 - 1; // 0x1090c
v6 = v19;
int32_t v20 = g229; // 0x1090e
int32_t v21 = v20; // 0x108fa5
if (v20 == 0) {
// 0x10912
g229 = 2;
v21 = 2;
// branch -> 0x10914
}
int32_t v22 = v17 + 169; // 0x10914
g228 = v22;
if (v19 == 0) {
// 0x1091a
g220 = v1;
g228 = v3;
g229 = v4;
return 0;
}
int32_t v23 = v11 + v8;
v7 = v18;
v8 = v5;
v9 = v22;
v10 = v21;
v11 = v23;
v12 = v14 + 188 ^ v17;
v13 = v19;
// branch -> 0x108f4
}
}

Тема "Java програмиране" | Включи се в дискусията:


Сподели форума:

Бъди информиран. Следвай "Направи сам" във Facebook:

Намери изпълнител и вдъхновения за дома. Следвай MaistorPlus във Facebook: