mirror of
https://git.zaage.it/robert/balong-usbload.git
synced 2024-11-10 01:11:03 +00:00
Теперь программа автоматически патчит загрузчик при загрузке, удаляя из него процедуру flash_eraseall
Подавить этот патч можно с помощью ключа -c, при этом загрузчик грузится как есть, и, если он непатченный, стирает нафиг всю флешку. Теперь в репозиторий можно класть непатченные загрузчики для чипсетов r2 и r11.
This commit is contained in:
parent
8c6cba77ad
commit
451b5dd399
@ -214,7 +214,7 @@ void main(int argc, char* argv[]) {
|
||||
unsigned int i,res,opt,datasize,pktcount,adr;
|
||||
int bl; // текущий блок
|
||||
unsigned char c;
|
||||
int fbflag=0, tflag=0, mflag=0, bflag=0;
|
||||
int fbflag=0, tflag=0, mflag=0, bflag=0, cflag=0;
|
||||
int koff; // смещение до ANDROID-заголовка
|
||||
char ptfile[100];
|
||||
|
||||
@ -253,7 +253,7 @@ bzero(fileflag,sizeof(fileflag));
|
||||
memset(fileflag, 0, sizeof(fileflag));
|
||||
#endif
|
||||
|
||||
while ((opt = getopt(argc, argv, "hp:ft:ms:b")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "hp:ft:ms:bc")) != -1) {
|
||||
switch (opt) {
|
||||
case 'h':
|
||||
|
||||
@ -270,6 +270,7 @@ printf("\n Утилита предназначена для аварийной U
|
||||
-t <file>- взять таблицу разделов из указанного файла\n\
|
||||
-m - показать таблицу разделов загрузчика и завершить работу\n\
|
||||
-s n - установить файловый флаг для раздела n (ключ можно указать несколько раз)\n\
|
||||
-c - не производить автоматический патч стирания разделов\n\
|
||||
\n",argv[0]);
|
||||
return;
|
||||
|
||||
@ -281,6 +282,10 @@ printf("\n Утилита предназначена для аварийной U
|
||||
fbflag=1;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
cflag=1;
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
fbflag=1;
|
||||
bflag=1;
|
||||
@ -414,7 +419,7 @@ for(bl=0;bl<2;bl++) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Патч erase-процедуры
|
||||
// Патч erase-процедуры на предмет игнорировани бедблоков
|
||||
if (bflag) {
|
||||
res=perasebad(blk[bl].pbuf, blk[bl].size);
|
||||
if (res == 0) {
|
||||
@ -422,6 +427,12 @@ for(bl=0;bl<2;bl++) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Удаление процедуры flash_eraseall
|
||||
if (!cflag) {
|
||||
res=pv7r2(blk[bl].pbuf, blk[bl].size)+pv7r11(blk[bl].pbuf, blk[bl].size);
|
||||
if (res != 0) printf("\n* Удалена процедура flash_eraseal по смещению %08x",res);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user