├── LICENSE ├── .gitignore └── README.rst /LICENSE: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.py[cod] 2 | 3 | # C extensions 4 | *.so 5 | 6 | # Packages 7 | *.egg 8 | *.egg-info 9 | dist 10 | build 11 | eggs 12 | parts 13 | bin 14 | var 15 | sdist 16 | develop-eggs 17 | .installed.cfg 18 | lib 19 | lib64 20 | 21 | # Installer logs 22 | pip-log.txt 23 | 24 | # Unit test / coverage reports 25 | .coverage 26 | .tox 27 | nosetests.xml 28 | 29 | # Translations 30 | *.mo 31 | 32 | # Mr Developer 33 | .mr.developer.cfg 34 | .project 35 | .pydevproject 36 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | AntiDrive 2 | ========= 3 | 4 | Reversing Google Drive and other goodies ;) 5 | 6 | Reversing Google Drive 7 | ====================== 8 | 9 | 1. Download Google Drive and install it (or use 7-Zip to extract the 10 | resources from the .msi file). 11 | 12 | 2. ``googledrivesync.exe`` file is "fat" and looks interesting, right? 13 | 14 | 3. Download a special version of PyInstaller. 15 | 16 | :: 17 | 18 | $ git clone https://github.com/kholia/pyinstaller.git -b AntiDrive 19 | 20 | $ cd pyinstaller 21 | 22 | 4. Extract stuff from ``googledrivesync.exe`` file. 23 | 24 | :: 25 | 26 | $ python utils/ArchiveExtractor.py googledrivesync.exe 27 | [+] magic found at 6125 28 | Extracting bytecode to output/osx.pyc 29 | ... 30 | Extracting bytecode to output/common/worker.pyc 31 | Extracting bytecode to output/wx/html2.pyc 32 | Extracting bytecode to output/encodings/punycode.pyc 33 | Extracting bytecode to output/common/cloud_snapshot_diff_helper.pyc 34 | Extracting bytecode to output/windows/cacheinvalidation.pyc 35 | Extracting bytecode to output/encodings/cp1258.pyc 36 | Extracting bytecode to output/common/snapshot_sqlite.pyc 37 | Extracting bytecode to output/win32com/client/CLSIDToClass.pyc 38 | Extracting bytecode to output/encodings/latin_1.pyc 39 | Extracting bytecode to output/tokenize.pyc 40 | ... 41 | Extracting source to output/_mountzlib.py 42 | Extracting source to output/useUnicode.py 43 | Extracting source to output/versioneddll.py 44 | Extracting source to output/win32comgenpy.py 45 | Extracting source to output/main.py 46 | 47 | 5. De-compile the bytecode files using uncompyle2. 48 | 49 | :: 50 | 51 | $ uncompyle2 output/common/worker.pyc 52 | pass 53 | 54 | ;) 55 | 56 | 5. Study the soure-code, find bugs and make Google Drive better! 57 | 58 | 59 | Credits 60 | ======= 61 | 62 | * uncompyle2 63 | 64 | - https://github.com/wibiti/uncompyle2 65 | 66 | - https://github.com/Mysterie/uncompyle2 67 | 68 | * PyInstaller 69 | 70 | - https://github.com/kholia/pyinstaller/tree/AntiDrive 71 | 72 | - https://github.com/pyinstaller/pyinstaller 73 | 74 | TOD0 75 | ==== 76 | 77 | * dump bytecode from memory (revive pyREtic). 78 | --------------------------------------------------------------------------------