Comments (4)
Ciao! Innanzitutto mi fa piacere sapere che c'è qualcuno di interessato a pdfgrabber per quanto riguarda il lato reverse engineering. Per sviluppare pdfgrabber mi sono occupato principalmente delle applicazioni android per vari motivi:
- Il bytecode DEX delle app android è decisamente più semplice e i decompilatori moderni sono in grado di ricostruire quasi completamente il codice sorgente Java delle app (alcuni sono in grado di creare direttamente i progetti per Android Studio).
- Il bytecode DEX contiene, per design, il nome delle funzioni. Alcune applicazioni ovviamente offuscano tali nomi, ma siccome è un'opzione "opt-in" su Android Studio, molti sviluppatori non lo fanno (se non sbaglio Zanichelli è fra questi ultimi).
- Android mette a disposizione delle librerie crittografiche standard di sistema. Questo semplifica di molto il lavoro degli sviluppatori e di conseguenza anche il lavoro di RE, poiché le funzioni crittografiche si riducono ad un paio di invocazioni a metodi di classi con nomi facili da riconoscere (e non offuscati, poiché appunto sono librerie di sistema).
- Siccome Android viene assunto come ambiente di esecuzione più sicuro che una applicazione web o un programma desktop, questo spesso fa sì che gli sviluppatori siano più riluttanti ad implementare SSL pinning o altre misure per evitare che gli utenti possano sniffare il traffico internet dell'app. Fortunatamente, grazie alla natura open*** di Android queste misure sono facilmente aggirabili.
Cerco dunque di evitare per quanto possibile di analizzare codice macchina di applicativi desktop o applicazioni web. Le prime (nel raro caso in cui non siano un semplice webview o app electron e ricadendo quindi nelle seconde) perché come avrai ben scoperto richiedono uno sforzo maggiore a causa di ottimizzazioni aggressive dei compilatori, offuscamento, e maggiore complessita in generale. Le seconde perché spesso forniscono dati di qualità minore (render in formato jpg dei pdf originali) in quanto percepite appunto più "vulnerabili" da parte degli sviluppatori, e perché permettono alle case editrici di aggiornarle quando preferiscono, rendendo gli script inutili in qualche mese. Al contrario, le app android richiedono una stabilità e una coerenza con una API che non può, per motivi tecnici, evolversi rapidamente, perché non è concepibile per un utente dover aggiornare un'app ogni volta che si vuole leggere un maledettissimo libro (e gli sviluppatori delle case editrici sono ben consapevoli che una buona fetta di questi utenti installa queste app su dispositivi decisamente poco potenti).
Per rispondere finalmente alla tua domanda (forse in modo un po' deludente) tutto ciò che ho fatto è stato:
- Ottenere l'APK dell'app di Booktab
- Aprirla in un decompilatore android (tipo jadx-gui)
- Cercare per le stringhe "AES", "Cipher", "Crypto", "Decrypt", ec...
- Individuare la routine di decriptazione
- Trovare dove un oggetto
javax.crypto.Cipher
viene inizializzato (nel nostro cas con.getInstance('Blowfish/CBC/PKCS5Padding');
Se hai altre domande sarò ben felice di risponderti!
from pdfgrabber.
Ciao!
Grazie mille per la risposta, sono abbastanza familiare con il reverse di app mobile (anche se di solito più per vulnerabilità), e l'avevo scartata a priori perché volevo affinare le mie skill con il reverse x64!
Ti ringrazio ancora per la risposta :)
from pdfgrabber.
Posso contattarti in privato in qualche modo?
from pdfgrabber.
Posso contattarti in privato in qualche modo?
Certo! Puoi trovarmi su telegram
from pdfgrabber.
Related Issues (20)
- Pearson Plus gives No books! HOT 3
- Pearson Reader+: `StopIteration` at Extracting epub HOT 4
- Could this project be versioned somehow? HOT 3
- Binary release with Nutika HOT 4
- KeyError: 'encrypted_password' HOT 2
- Unsupported format HOT 1
- TypeError: string indices must be integers, not 'str' HOT 2
- Unsupported format ETEXT2_PXE HOT 2
- hbs error HOT 1
- bsmart key error HOT 2
- ValueError: row 24: page number out of range while downloading from blk HOT 1
- HUB Kids HOT 2
- Takedown notice HOT 8
- errore su pagine di libri: non tutto viene stampato sulla pagina HOT 3
- Hub Scuola error: no objects found HOT 3
- integrazione sfoglialibri hoepli HOT 2
- Keyerror in blk HOT 1
- Blinklearning download error HOT 3
- hubscuola HOT 2
- CNG KeyError: 'logicalPageNumber'
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pdfgrabber.