Как пропатчить бэкап IMEI на необходимыйTheDrive • 26.01.2016, 10:14
ТребованияДанная прога требует наличия
.NET 4.x и библиотеки
MSVCRT120.DLL, являющейся частью Microsoft Visual C (Builder) 2013 Redistributable package.
Скачать можно здесь (32-бит, требуется доступ в интернет при установке ибо "оно" докачивает "то что считает нужным" само):
vcredist_x86.exeСкачать:
vcredist_x86.exe ( 6.2 МБ )
Обратите внимание. что библиотека (и соотв пакет) нужны
32-битные, даже если ваша система 64-бит.
Причина состоит в том, что программа сама 32-битная и библиотеки требует тоже 32-битные.
Вы можете поставить обе версии пакета одновременно, программы будут использовать ту версию библиотек, которая им требуется.
Прилагаю также сюда
imeirebuilder.zip ( 21.24 КБ )
Работа с программой проста до безобразия.
1. Распаковываем в любое удобное место, запускаем, если не работает, то проверяем "Требования".
2. Загружаем в программу нужный
.QCN (
xQCN НЕ ГОДИТСЯ! Если у вас xQCN - загружаем его в QCNView и сразу "сохраняем как" .QCN)
3. В соотв полях видим IMEI, прописанные в бакапе. Меняем их на свои.
Учитываем, что
последняя цифра IMEI является
контрольной суммой, вычисленной по алгоритму
Луна. Поэтому фигней не страдаем и что попало не вбиваем, а вбиваем IMEI списанные в самом начале с наклейки на аппарате.
IMEI Guidelines
Крохотный Imei Checksum Digit Calc by Yomanda-Productionz (2006)
imeicalc.rar ( 3.17 КБ )
Пример кода на PHP, правильно считающий последнюю цифру IMEI
<?php
$imei = "49015420323751"; //chk has to be 8
print "Your imei is . . . ".$imei."<br><br><br>";
//select numbers from imei and add to array
for ($i = 0; $i <= 14; $i++) {
$D[]=$imei[$i];
}
print "<h2>Staring sum.....</h2>";
print "<h4>adding every second number starting from the second digit, as single digits after doubling...</h4>";
$sumeven = 0;
// adding even numbers together
for ($i = 1; $i <= 14; $i=$i+2) {
$sum = $D[$i]*2;
//seperate numbers that become double digits
if ($D[$i] > 4) {
//convert int to string
$sumS = (string)$sum;
//clear array
unset($splitt);
//seperate the numbers and add them together
for ($j = 0; $j <= 1; $j++) {
$splitt[]=$sumS[$j];
$sumeven = $sumeven + $splitt[$j];
print $splitt[$j];
print "<br>";
}
//else just add the single number to the last
} else {
$sumeven = $sumeven + $sum;
print $sum;
print "<br>";
}
}
print "<h4>The total is... ".$sumeven."</h4><h4>adding every second number starting from the first digit...</h4>";
// adding odd numbers together
$sumodd = 0;
$sum = 0;
for ($i = 0; $i <= 13; $i=$i+2) {
$sum = $D[$i];
$sumodd = $sumodd + $sum;
print $sum;
print "<br>";
}
print "<h4>The total is...".$sumodd."</h4>";
// add odd and even numbers
$total = $sumodd + $sumeven;
print "<h4>adding both totals together . . .".$total."</h4>";
//convert int to string
$totalS = (string)$total;
//Split total into two variables
for ($i = 0; $i <= 1; $i++) {
$split[]=$totalS[$i];
}
print "<br><br>";
if ($split[1] == 0) {
print "Because ".$total." ends in a 0 the check digit from IMEI:".$imei." is 0";
} else {
$split[0] = $split[0] + 1;
$totalNew = $split[0]."0";
$chk = $totalNew - $total;
print "Because the number ".$total." does not end in a 0 we round it up<br>to the next 10 giving us ".$totalNew." we then subtract the original total from this - ".$total." giving us the check digit<br>";
print "<h4>The check digit from IMEI:".$imei." is ".$chk."</h4>";
}
?>
4. Жмем
Rebuild, выбираем файл, куда сохранить поправленный бакап QCN.
Учитываем, что
ИСХОДНЫЙ файл выбрать для сохранения
нельзя, и не только потому, что всегда надо иметь бакап, но и потому, что тот файл открыт на чтение и сохранить в него другой файл банально не удстся!
Проверяем, что полученный файл имеет
размер, идентичный исходному, и пробуем прошить бакап в аппарат с помощью
QPST->Software Download->Restore (
И только ТАК!)
Более сложный вариант с объяснением процесса.IMEI 1 хранится в NV ITEM
550 (NV_UE_IMEI_I)
IMEI 2 хранится в NV ITEM
(SIM1) 550 (NV_UE_IMEI_I)
IMEI закодированы (НЕ зашифрованы!) по специальному простенькому алгоритму Qualcomm
Калькулятор-переводчик есть, например, в EFS Professional, была еще куча отдельных программ, найти по быстрому не удалось
Как перевести код IMEI в "человеко-читаемый" и обратно вид есть куча статей.
Перевод IMEI из читаемого формата в формат Qualcomm NVRAM
Привожу выдержку из одной из них (by wd1993 для
DNS S4504)
1) Открываем сохраненный qcn файл HEX редактором и ищем в нем оба IMEI по такому алгоритму (как пример)
Исходный (текущий IMEI) отображаемый например по *#06#
123456789012345делим по 2 цифры от конца и впереди добавляем
"a"a1 23 45 67 89 01 23 45переставляем цифры в парах
1a 32 54 76 98 10 32 54Получаем HEX строку которую необходимо искать в qcn файле
2) Найденную HEX строку меняем на необходимый IMEI (на что заменять получаем по выше написанному алгоритму)
Например нужно заменить на
987654321098765Тогда
a9 87 65 43 21 09 87 65Перестановка
9a 78 56 34 12 90 78 56Вот на это нужно заменить
найденный в файле
1a 32 54 76 98 10 32 54Делаем замену для обеих IMEI если нужно.
3) Сохраняем измененный qcn файл
Аналогично можно найти и восстановить оригинальный
MAC адрес
WiFiОн записан
4 раза подряд в NV ITEM
4678 [NV_WLAN_MAC_ADDRESS_I], с index 0 до index 3
MAC-адрес
Bluetooth хранится в NV ITEM
447 [NV_BD_ADDR_I]
Оба MAC-а хранятся в открытом виде - 6 байт подряд - "как слышится, так и пишется". (Но MAC WiFi записан 4 раза, а MAC BT - 1 раз)
А вот серийный номер устройства (который вам показывает ADB), Вы просто так не поменяете, он является серийным номером eMMC. Убедиться в этом можно поглядев eMMC CID
Про S/N, eMMC CID, Android ID и т.п.
Подключаем девайс в режиме ADB, набираем
Запоминаем свой номерок.
Затем набираем:
adb shell cat /sys/class/block/mmcblk0/device/cid
Либо
adb shell cat /sys/devices/soc.0/7824900.sdhci/mmc_host/mmc0/mmc0:0001/cid
Получаем 32 значный шестнадцатиричный CID вида:
150100463732324d4200________xxxx,
где вместо подчеркиваний Вы увидите свой серийник.
Желающие могут проверить, 8 из 8 шестнадцатиричных цифр SN полностью совпадает с цифрами с 21 по 28 CID
Тем не менее, можно временно изменить данный ID, запатчив скрипты инициализации на ранних ее этапах (например пересобрав Boot), вписав туда любой понравившийся, однако при
перепрошивке, затрагивающей место патча и хранения S/N все вернется обратно. Перманентно сменить S/N можно лишь изменив CID еММС средствами фирмвера самой eMMC (аналога SD-карты в BGA-корпусе). Это большая проблема, и никому, особо, не нужно.
Android ID хранится где-то на /data или /system (в нете есть статьи). Если Вас раздражает слежка Google и иных не дружественных организаций, и Вы считаете (знаете) что Ваши ID регулярно утекают "не туда" - просто правьте их в скриптах. Можете написать скрипт чтобы часть их них менялась хоть при каждом старте системы (часть программ может перестать работать). Правда с IMEI/MAC этот номер не выгорит, поск нет готовых средств доступа к NVRAM модема "изнутри" Android, через RIL. Но можно использовать программы эмулирующие смену IMEI внутри аппарата, типа Imei Changer.apk для Xposed. Опсосу все равно уйдет реальный IMEI, а вот Google и др прогам (и их хозяевам) уйдет "левак" (по *#06# тоже будет левак показывать).
RF_NV_ITEM_Manager из старых версий QST для правки IMEI в телефоне (и, вообще, для записи данных)
НЕ ИСПОЛЬЗУЙТЕ!Вы запорете себе NVRAM! (Читать данные NVRAM данной программой не возбраняется, но за корректность уверенности нет. Писать - НЕЛЬЗЯ!)
QFIL из свежего комплекта QPST 2.7.425
для работы с NVRAM Q415 НЕ ИСПОЛЬЗУЙТЕ!Вы
запорете себе NVRAM в части данных по второму слоту (раздел NVRAM-SIM1,
IMEI2 будет
null).
QFIL (из QPST 2.7.425) не умеет работать с веткой NVRAM (SIM1) и игнорирует ее. (Прошивать с помощью QFIL - МОЖНО! Нельзя лишь работать с NVRAM через имеющиеся, соотв., пункты меню, поск часть данных утратится, как при сливе, так и при заливе.)
Update:IMEIRebuilder не всегда работает под
Win XP (не хочет запускаться, хотя, что интересно, в какие-то моменты запускался).
Поэтому, я запатчил его для корректной работы с
Windows XP и
.Net 4.0.
.Net 4.5 нельзя установить на WinXP и ниже. .Net 4.0 - это последняя версия .Net Framework, официально доступная для XP.
Необходимая библиотека из рантайма (
MSVCR120.DLL) приложена в архиве и, скорее всего, сработает и так, без установки вышеуказанного рантайма MSVC2013, но если что...
Если у вас Windows XP/2000 убедитесь, что у вас установлен .Net 4.0 и запустите
IMEIRebuilderXP.
На Win7+ тоже можно запускать, и тоже должно работать без установки Runtime.
Работоспособность, естественно, проверена, но не гарантируется.
Патч крайне простой. Желающие могут сравнить и понять как заставить многие программы, зачем-то скомпилированные их беспечными авторами под .Net 4.5, работать с .Net 4.0 и WinXP.
Собрал все в один архив. В архив входят:
- IMEIRebuilder by Shadowmaster63 (4PDA)
- IMEIRebuilderXP by Shadowmaster63, patched for WinXP/.Net4.0 support by TheDrive
- ImeiCalc by Yomanda Productions
- MSVCR120.DLL (from MSVC runtime 2013, required by IMEIRebuilder*)
- Short description/manual in English for our foreign friends
QualcommIMEIRebuilder.zip ( 550.19 КБ )
Сообщение отредактировал Leo1703 - 27.10.22, 17:34