Sviluppo e hacking smartphone mediatek
Moderatore: Staff
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Sviluppo e hacking smartphone mediatek
L'idea del topic è quella di condividere informazioni e risorse utili per i possessori di questi device.
-
- Iper Master
- Messaggi: 2492
- Iscritto il: gio 10 mar 2011, 9:21
- Slackware: 15.0
- Kernel: 5.15.x-generic
- Desktop: Sway
- Distribuzione: Arch Linux
Re: Sviluppo e hacking smartphone mediatek
A me non funziona perché nonostante scarichi il pacchetto per linux 32-bit il binario è a 64-bitmiklos ha scritto:ma quindi pure a te spflash non funziona su slackware..
Codice: Seleziona tutto
$ ./flash_tool.sh
./flash_tool.sh: line 13: ~/[...]/SP_Flash_Tool_Linux_v5.1520.00.100/./flash_tool: cannot execute binary file
$ file ./flash_tool
./flash_tool: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=4f33fd6864cc5905f3e6736d00cf2d07122d39d9, not stripped
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: Sviluppo e hacking smartphone mediatek
che dal mio modo di vedere sarebbe stato meglio visto che a me invece si avvia (io ho però un picci a 64bit) ma mi da un errore che non sono riuscito a capirerik70 ha scritto:A me non funziona perché nonostante scarichi il pacchetto per linux 32-bit il binario è a 64-bit
Ti volevo chiedere una cosa.. che versione di twrp stai utilizzando!?!? Dove l'hai recuperata!?!? Te lo chiedo perchè ho compilato l'ultima versione 'stabile'.. la 3.0 ma ho avuto un sacco di problemi con il reboot(sostanzialmente non lo faceva). Alla fine spulciando il sorgente ho visto che potevo richiamare degli script e cosi' ho fatto
A te risulta?!? Se spacchetti il ramdisk della tua recovery trovi anche tu questi file!? Oramai è piu' una curiosità che altro visto che ho risolto, però non l'ho visto fare per nessun altro smartphone.
-
- Iper Master
- Messaggi: 2492
- Iscritto il: gio 10 mar 2011, 9:21
- Slackware: 15.0
- Kernel: 5.15.x-generic
- Desktop: Sway
- Distribuzione: Arch Linux
Re: Sviluppo e hacking smartphone mediatek
No, non c'è nessuno script per il poweroff. Da quello che ho capito fanno tutto da init.rc. Comunque queste recovery "cucinate" da terzi, anche se fanno il loro lavoro, non sono perfette. Nelle 2 che ho provato appaiono messaggi tipo "non posso s/montare /misc|/emmc" e simili. O è normale?
Per compilarmela devo tirare giù tutto il repo di CM?
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: Sviluppo e hacking smartphone mediatek
sni, in realtà mi sembra di aver capito che vengono fatte delle chiamate verso il kernel.. comunque a sto punto mi sa che ho qualche problema in questo senso.rik70 ha scritto:No, non c'è nessuno script per il poweroff. Da quello che ho capito fanno tutto da init.rc.
è questo il motivo per il quale io ho iniziato quest'avventura/incubo. Tieni conto anche che, ad esempio, sul mio smartphone oltre alla sd esterna, ne sta una emulata. L'emulazione avviene mappando la directory /data/media con i percorsi canonici. Se non correttamente compilate le recovery, quando viene richiesto il wipe, formattano la partizione /data con la conseguente cancellazione di questo tipo di storage, invece di fare una semplice rm ignorando quel percorso.rik70 ha scritto: Comunque queste recovery "cucinate" da terzi, anche se fanno il loro lavoro, non sono perfette.
si, o meglio alcune recovery cercano la directory /misc per salvarsi alcune cose. Purtorppo sul mio mediatek la partizione misc è di tipo emmc e di conseguenza non è montabile tramite fstab. Questo perchè questo tipo di partizioni non hanno un filesystem vero e proprio e vengono lette scritte come fossero dei device a caratteri... io di fatto la ignoro completamente.rik70 ha scritto: Nelle 2 che ho provato appaiono messaggi tipo "non posso s/montare /misc|/emmc" e simili. O è normale?
Per compilare solo la recovery segui questa guida. Io ho il source tree completo, ma all'interno della guida trovi i riferimenti ad un repository ridotto. Fai attenzione perchè mi sembra di aver capito che tu abbia un sistema a 32bit. Quando inizializzi il repository vengono scaricati anche delle toolchain precompilate e qualcuna di queste mi sa che è a 64bit. Non so se sia possibile usarne altre(credo di si).. a me non è servito
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: Sviluppo e hacking smartphone mediatek
Codice: Seleziona tutto
TWPartition* misc = PartitionManager.Find_Partition_By_Path("/misc");
if (misc != NULL) {
if (misc->Current_File_System == "emmc") {
set_misc_device("emmc", misc->Actual_Block_Device.c_str());
} else if (misc->Current_File_System == "mtd") {
set_misc_device("mtd", misc->MTD_Name.c_str());
} else {
LOGERR("Unknown file system for /misc\n");
}
}
Codice: Seleziona tutto
/misc emmc /dev/misc
-
- Iper Master
- Messaggi: 2492
- Iscritto il: gio 10 mar 2011, 9:21
- Slackware: 15.0
- Kernel: 5.15.x-generic
- Desktop: Sway
- Distribuzione: Arch Linux
Re: Sviluppo e hacking smartphone mediatek
Molto di quello che hai scritto erano dubbi che mi volevo togliere e quindi chiedo.
Inizio da qui:
Da dove lo vedi? Qui dando un mount da `adb shell` vedo questo:miklos ha scritto:Tieni conto anche che, ad esempio, sul mio smartphone oltre alla sd esterna, ne sta una emulata.
Codice: Seleziona tutto
tmpfs /storage/emulated tmpfs rw,seclabel,relatime,mode=755,uid=1023,gid=1023 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
Sì sì, ero già sul pezzo da tempo ^^: ma come mai raccomandano di compilare con Omni 4.4 o 5.0? Tu hai il tree di CM e hai rimpiazzato la parte recovery con quella omniroom come suggerito nella guida?miklos ha scritto:Per compilare solo la recovery segui questa guida.
Ti riferisci al repo ridotto o...? Comunque l'hw che voglio usare per la compilazione è un portatile dual core intel. Non ricordo se è a 64-bit e su c'è una archlinux-32bit, ma non ho problemi a rasarla per metterci la slack a 64bit. Se riesco sto fine settimana lo tolgo dalla paraffinamiklos ha scritto:Quando inizializzi il repository vengono scaricati anche delle toolchain precompilate e qualcuna di queste mi sa che è a 64bit.
Chiudo con l'ultima domanda e poi ti rispondo sulla faccenda fstab in un altro post:
boot.img in pratica è la root, giusto? Se io apro una shell adb e do
Codice: Seleziona tutto
ls /
Se è corretto, se io modifico il file default.prop - ho visto che c'è qualche hack per la videocamera - e riflasho l'immagine di boot cambia qualcosa o le modifiche apportate vengono ignorate?
Ah, poi ti devo chiedere una cosa sull'immagine di sistema android, ma anche questo lo faccio a parte.
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: Sviluppo e hacking smartphone mediatek
lo vedi nell'init.rc dove vengono creati dei collegamenti simbolici alla directory /data/media verso i percorsi che poi ti ritrovi montati. in teoria è strano che siano montati tramite fuse. So che per le sdcard esterne viene fatto un mount particolare per consentire la gestione dei permessi su un filesystem fat32. Comunque per maggiori info leggi qui.rik70 ha scritto:Da dove lo vedi? Qui dando un mount da `adb shell` vedo questo:Il primo mi sembra innocuo, mentre il secondo....Codice: Seleziona tutto
tmpfs /storage/emulated tmpfs rw,seclabel,relatime,mode=755,uid=1023,gid=1023 0 0 /dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
considera che questa guida è ancora valida, ma è di un po' di tempo fa quando la twrp era la recovery ufficiale di questa custom rom. Io ho scaricato il sorgente della cyanogenmod nella sua interezza eppoi ho sostituito la recovery originale con la twrp.rik70 ha scritto:, tieni presente che sono anche io abbastanza 'inesperto'Sì sì, ero già sul pezzo da tempo ^^: ma come mai raccomandano di compilare con Omni 4.4 o 5.0? Tu hai il tree di CM e hai rimpiazzato la parte recovery con quella omniroom come suggerito nella guida?miklos ha scritto:Per compilare solo la recovery segui questa guida.
Si esatto... se fai una qualsiasi modifica al ramdisk presente nel bootimg e la riflashi le vedi applicate al successivo riavvio.rik70 ha scritto:Chiudo con l'ultima domanda e poi ti rispondo sulla faccenda fstab in un altro post:
boot.img in pratica è la root, giusto? Se io apro una shell adb e dovedo il contenuto del ramdisk di boot.img?Codice: Seleziona tutto
ls /
Se è corretto, se io modifico il file default.prop - ho visto che c'è qualche hack per la videocamera - e riflasho l'immagine di boot cambia qualcosa o le modifiche apportate vengono ignorate?
Ah, poi ti devo chiedere una cosa sull'immagine di sistema android, ma anche questo lo faccio a parte.
-
- Iper Master
- Messaggi: 2492
- Iscritto il: gio 10 mar 2011, 9:21
- Slackware: 15.0
- Kernel: 5.15.x-generic
- Desktop: Sway
- Distribuzione: Arch Linux
Re: Sviluppo e hacking smartphone mediatek
ho trovato un file 'init.fuse.rc' nella ramdisk dell'immagine di boot.
Dacci(dateci) uno sguardo:
http://pastebin.com/uwuKrq9F
A me sembra che si limiti a creare delle directory e dei link simbolici che trovano riscontro nell'output del mount che ho postato sopra, e infine a lanciare dei demoni/servizi 'fuse'. Credo abbia a che fare con quanto descritto qui.
Tu hai qualcosa di simile?
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: Sviluppo e hacking smartphone mediatek
Il mio init rc della stock è molto simile (anche se il tuo è molto piu' ordinato e commentato)rik70 ha scritto:A me sembra che si limiti a creare delle directory e dei link simbolici che trovano riscontro nell'output del mount che ho postato sopra, e infine a lanciare dei demoni/servizi 'fuse'. Credo abbia a che fare con quanto descritto qui.
Quindi anche tu hai una scheda emulata, per questo assicurati che la recovery quando faccia il wipe dei dati non elimini la directory /data/media.
-
- Iper Master
- Messaggi: 2492
- Iscritto il: gio 10 mar 2011, 9:21
- Slackware: 15.0
- Kernel: 5.15.x-generic
- Desktop: Sway
- Distribuzione: Arch Linux
Re: Sviluppo e hacking smartphone mediatek
Oh ca....volo.miklos ha scritto:Quindi anche tu hai una scheda emulata, per questo assicurati che la recovery quando faccia il wipe dei dati non elimini la directory /data/media.
Praticamente /data/media è come se fosse la sdcard interna. Ho trovato questo riguardante proprio la TWRP:
https://twrp.me/faq/datamedia.html
Che dici: ne discutiamo? Perché io a comprendonio inizio a perdere colpi e non vorrei fare ca..volate. Vedo che c'entra in qualche modo anche l'accesso multiutente allo storage.
Edit:
e infatti ora grazie alla recovery twrp riesco ad accedere all'archivio interno via MTP da slackware:
Sbaglio o l'articolo dice che le TWRP recenti quella directory non la toccano?
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: Sviluppo e hacking smartphone mediatek
direi proprio di si.. tra l'altro leggendo quest'articolo ho capito perchè sull'altro telefono che ho.. che ha solo lo storage interno... non è possibile montarlo come hard disk esterno.. perchè essendo emulata sistemi tipo windows chiederebbero di formattarlo perchè non sono in grado di montare l'ext4 e non c'avevo mai pensatorik70 ha scritto:Sbaglio o l'articolo dice che le TWRP recenti quella directory non la toccano?
grazie perchè questa disccusione mi sta tornando molto utile.. io sto facendo tutto un po' da zero e lungi da me essere un esperto
EDIT: comunque nn per toglierti la soddisfazione di farlo in autonomia, ma visto che abbiamo lo stesso soc posso caricare la recovery che ho compilato sul mio spazio github, se ti interessa mi potresti aiutare a testarla.. non ho ancora gestito la scheda sd esterna e l'usb-otg (perchè non ho a portata di mano un cavo per i test)
RI-EDIT: se hai fatto il root del telefono puoi usare i MobileUncle Mtk Tool per flashare la recovery (e altro) direttamente a sistema operativo acceso
-
- Iper Master
- Messaggi: 2492
- Iscritto il: gio 10 mar 2011, 9:21
- Slackware: 15.0
- Kernel: 5.15.x-generic
- Desktop: Sway
- Distribuzione: Arch Linux
Re: Sviluppo e hacking smartphone mediatek
Qui ho incollato il log della recovery (/tmp/recovery.log).
A occhio mi sembra tutto a posto per quanto riguarda la faccenda dei dati descritta nell'articolo:
Codice: Seleziona tutto
I:Setting up '/data' as data/media emulated storage.
I:Created '/sdcard' folder.
I:mount '/data/media' '/sdcard' process ended with RC=0
I:mount '/data/media/0' '/sdcard' process ended with RC=0
Codice: Seleziona tutto
Partition Logs:
/data | /dev/block/mmcblk0p7 | Size: 12988MB Used: 698MB Free: 11905MB Backup Size: 698MB
Flags: Can_Be_Mounted Can_Be_Wiped Can_Be_Backed_Up Wipe_During_Factory_Reset Wipe_Available_in_GUI IsPresent Has_Data_Media Can_Encrypt_Backup Use_Userdata_Encryption Is_Storage Is_Settings_Storage
Symlink_Path: /data/media/0
Symlink_Mount_Point: /sdcard
Primary_Block_Device: /dev/block/mmcblk0p7
Display_Name: Data
Storage_Name: Internal Storage
Backup_Path: /data
Backup_Name: data
Backup_Display_Name: Data
Storage_Path: /data/media/0
Current_File_System: ext4
Fstab_File_System: ext4
Backup_Method: files
MTP_Storage_ID: 65537
Questo è il twrp.fstab che, come mostra il log, va a sovrascrivere /etc/recovery.fstab:
Codice: Seleziona tutto
# mount point fstype device [device2]
/boot emmc /dev/bootimg
/cache ext4 /emmc@cache
/data ext4 /emmc@usrdata
/misc emmc /dev/misc
/recovery emmc /dev/recovery flags=display="Recovery";backup=1
/system ext4 /emmc@android
# /preload ext4 /emmc@preload flags=display="Preload";backup=1;wipeingui
/external_sd vfat /dev/block/mmcblk1p1 flags=display="External SD-card";storage;wipeingui;removable
# /usb-otg vfat /dev/block/sda1 /dev/block/sda flags=display="USB-OTG";storage;wipeingui;removable
/nvram emmc /dev/nvram flags=display="Nvram";backup=1
/uboot emmc /dev/uboot flags=display="Uboot";backup=1
/logo emmc /dev/logo flags=display="Boot Logo";backup=1
- la parte USB-OTG è commentata;
- idem per il preloader;
- la presenza dei flag 'wipeingui' che permette di "giocare" su cosa vogliamo che sia resettato/cancellato.
In ultimo la faccenda del /dev/misc.
Perché lo mettono? Nello schema partizioni del mio dispositivo vedo questo:
Codice: Seleziona tutto
Part_Name Size StartAddr Type MapTo Region
preloader 0x0000000000040000 0x0000000000000000 2 /dev/misc-sd BOOT_1
[...]
Part_Name:Partition name you should open;
Size:size of partition
StartAddr:Start Address of partition;
Type:Type of partition(MTD=1,EMMC=2)
MapTo:actual device you operate
Bho sì, non ci sono problemi ma funzionerà col tuo kernel? C'è un modo per testarla anche senza flashing: fastboot. Hai provato? Comunque fammi sapere prima cosa pensi sul poema che ho appena scritto, perché ho visto su github il tuo recovery.fstab e non mi torna l'ultima riga - nel senso che non la capisco.miklos ha scritto:visto che abbiamo lo stesso soc posso caricare la recovery che ho compilato sul mio spazio github, se ti interessa mi potresti aiutare a testarla.
Il "bello" è che è già rootato anche se non ho alcuna app che gestisce le autorizzazioni. Mi basta attivare l'accesso root su simple-explorer e ho il pieno controllo. Oppure anche via adb shell con '/system/xbin/su'.miklos ha scritto:RI-EDIT: se hai fatto il root del telefono
-
- Iper Master
- Messaggi: 2492
- Iscritto il: gio 10 mar 2011, 9:21
- Slackware: 15.0
- Kernel: 5.15.x-generic
- Desktop: Sway
- Distribuzione: Arch Linux
Re: Sviluppo e hacking smartphone mediatek
Ho scoperto per caso come fare ad utilizzare i tool "canonici" per scompattare il boot.img "non convenzionale" di Mediatek. In pratica bisogna saltare i primi 512 byte dell'archivio gzip contenente l'initram.
Ho quindi modificato questa stringa di 'build/tools/device/mkvendor.sh'
Codice: Seleziona tutto
gunzip -c ../$BOOTIMAGEFILE-ramdisk.gz | cpio -i
Codice: Seleziona tutto
dd if=../$BOOTIMAGEFILE-ramdisk.gz bs=512 skip=1 | gunzip -c | cpio -i
Codice: Seleziona tutto
build/tools/device/mkvendor.sh [vendor] [codename] [file_boot.img]
Codice: Seleziona tutto
├── AndroidBoard.mk
├── AndroidProducts.mk
├── BoardConfig.mk
├── cm.mk
├── device_a806.mk
├── kernel
├── recovery.fstab
└── system.prop
1)
Codice: Seleziona tutto
# fix this up by examining /proc/mtd on a running device
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x105c0000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x105c0000
Non è un problema, dato che si possono leggere nel file '/proc/dumchar_info', ma giusto per sapere.
2)
Codice: Seleziona tutto
BOARD_FLASH_BLOCK_SIZE := 131072
Dènchiu.
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: Sviluppo e hacking smartphone mediatek
http://donandroid.com/android-partitions-sdcard-boot-recovery-cache-data-system-misc-1043
io ho la tua stessa situazione, nel senso che anche io ho un device /dev/misc-sd che corrisponde al preloader, ma ho anche /dev/misc infatti sono riuscito a farla rilevare correttamente.rik70 ha scritto:Quindi '/dev/misc-sd' anziché '/dev/misc' e filesystem 'emmc'(e torna). Sarà questa la causa di quegli errori di cui dicevo sopra? Ma poi: perché tentare di montare il preloader?
io, sarà pure che utilizzo il ramo della cm-12.1 e non la cm-11.1 le ho in decimale. Comunque penso sia indifferente, segui lo standard che hai trovato, queste misure dovrebbero servire fra le altre cose a bloccare la build se, ad esempio, la recovery che viene fuori andrebbe a sforare la dimensione della partizionerik70 ha scritto:ovviamente quei valori vanno sostituiti, ma sempre in notazione esadecimale?
Non è un problema, dato che si possono leggere nel file '/proc/dumchar_info', ma giusto per sapere.
bella domanda guardando un po' i device tree di altri smartphone ho trovato la formuletta BOARD_KERNEL_PAGESIZE * 64.. che nel nostro caso coincide con il valore che viene impostato (deduco che lo faccia lo script visto che la variabile BOARD_KERNEL_PAGESIZE la trovi sempre nel BoardConfig.mk)rik70 ha scritto:da dove lo prendi quel valore?
non malerik70 ha scritto:Ho scoperto per caso come fare ad utilizzare i tool "canonici" per scompattare il boot.img "non convenzionale" di Mediatek. In pratica bisogna saltare i primi 512 byte dell'archivio gzip contenente l'initram.
Io sono riuscito ad ottenere una recovery twrp quasi perfetta (il quasi è d'obbligo perchè alcune scelte che ho fatto sono soggettive) e la uploaderò sul mio spazio github. Pensandoci bene se la volessi usare dovresti esploderla e inserire il tuo kernel(perchè il mio potrebbe crearti dei problemi col touch).. oltre a verificare per bene che le partizioni che ho io siano compatibili.. inoltre io ho dovuto fare un po' di hack perchè ad esempio il mio telefono supporta la modalità guanti (touch supersensibile) e mi sono dovuto inventare un magheggio per disattivarla nella recovery. In fin dei conti visto che ci sei quasi non ne vale la pena usare la mia, ma sarà piu' divertente compilarla da solo Ovviamente puoi prendere spunto, ad esempio io ho scoperto che la twrp cerca, e se esistono esegue, degli script bash all'avvio.. magari ti possono tornare utili per qualcosa.