There's been speculation about exactly how p3droid's pre-rooted two-part GB .zip files actually gains you root (including a question as to whether or not these files really are the official 2.3.3 / .596 OTA).
I made my own speculations about how this was accomplished in a few different threads here in the Droid X root sub-forum:
5/30: http://androidforums.com/droid-x-all-things-root/344640-froyo-gingerbread-rooted-will-i-lose-everything.html#post2751212
6/10: http://androidforums.com/droid-x-all-things-root/352562-i-dont-understand.html#post2806667
6/15: http://androidforums.com/droid-x-all-things-root/348670-gingerbreak-ota-gb.html#post2825785
Well, I decided to deconstruct p3droid's files and uncover exactly how the root process works.
The Results
1. p3droid's pre-rooted two-part GB .zip files ARE the official 2.3.3 / .596 OTA, just with root already baked-in.
2. There's no "secret sauce" or new GingerBread root exploit involved here--just some very clever and creative work by p3droid's The Black Hat team to pre-package the root parts in the two-part .zip files.
3. Currently, SBF'ing back to Froyo, rooting with Z4root, and installing the p3droid's two-part pre-rooted .zip files are the only way to gain and retain root for 2.3.3 / .596 GingerBread (i.e., you have to have root (in Froyo) to get/retain root in GingerBread.
The Boring Details ()
1. Analyzing the files themselves:
The difference in the number of files and directories is accounted for by the splitting-up of the OTA into two different .zip files (i.e., the duplicated META-INF files used in signed .zip files) and the inclusion of the root-related files. The following are the only "extra" (non META-INF files) are the following four files (which were inserted into the the part1.zip file):
2. Analyzing the files' contents:
A. First, I extracted both of p3droid's pre-rooted two-part GingerBread .zip files into one common directory.
B. Next, I extracted the contents of the 2.3.3 (.596) official GingerBread OTA (update.zip) into its own directory.
C. Next, I used the fciv.exe utility to generate MD5 checksums for all of the files.
D. I then compared output of the generated MD5 files: the contents of the two-part, pre-rooted GB files are identical to the official GB 2.3.3 OTA with the exception of the inclusion of four extra root files mentioned above.
3. Analyzing the update-script files
Finally, I then compared the update-script files in each of the above filesets. Here are the differences that I observed:
1. The official OTA's update-script includes various assertions to ensure that you are indeed a Moto Droid X of the proper O/S release:
These assertion checks are not present in p3droid's update-script files.
2. p3droid's update-script installs the root-related logwrapper\bin\logwrapper, root\app\SuperUser.apk, root\bin\busybox, and root\bin\su files.
3. Lastly, p3droid's update-script makes the requisite symbolic links to busybox for all of the various commands/utilities that busybox supports.
4. There are a few minor spelling and order differences in the update-script filesets, but nothing significant.
------------------------------------------------------
That's it .
The only outstanding question in my mind is why it was necessary to create two .zip files. I'm sure there's a good reason...I just don't know what it is right now . My son has a Droid 2 Global that is about to get its GingerBread update and I was considering using this information to build a two-part .zip set for him if it weren't for this lingering question...
Congrats and thanks again to p3droid and Team Black Hat for making this GingerBread rooting method for all of us.
Cheers!
I made my own speculations about how this was accomplished in a few different threads here in the Droid X root sub-forum:
5/30: http://androidforums.com/droid-x-all-things-root/344640-froyo-gingerbread-rooted-will-i-lose-everything.html#post2751212
6/10: http://androidforums.com/droid-x-all-things-root/352562-i-dont-understand.html#post2806667
6/15: http://androidforums.com/droid-x-all-things-root/348670-gingerbreak-ota-gb.html#post2825785
Well, I decided to deconstruct p3droid's files and uncover exactly how the root process works.
The Results
1. p3droid's pre-rooted two-part GB .zip files ARE the official 2.3.3 / .596 OTA, just with root already baked-in.
2. There's no "secret sauce" or new GingerBread root exploit involved here--just some very clever and creative work by p3droid's The Black Hat team to pre-package the root parts in the two-part .zip files.
3. Currently, SBF'ing back to Froyo, rooting with Z4root, and installing the p3droid's two-part pre-rooted .zip files are the only way to gain and retain root for 2.3.3 / .596 GingerBread (i.e., you have to have root (in Froyo) to get/retain root in GingerBread.
The Boring Details ()
1. Analyzing the files themselves:
Code:
File Size File Name
----------- --------------------------------------------------
104,274,395 Blur_Version.2.3.340.MB810.Verizon.en.US-Part1.zip
13,534,847 Blur_Version.2.3.340.MB810.Verizon.en.US-Part2.zip
-----------
117,809,242 (81 directories, 938 files)
File Size File Name
----------- --------------------------------------------------
117,239,128 Official DX Gingerbread 2.3.3 (4.5.596) Release OTA.zip
(70 directories, 928 files)
There is a difference of 570,114 bytes between the two filesets.
The difference in the number of files and directories is accounted for by the splitting-up of the OTA into two different .zip files (i.e., the duplicated META-INF files used in signed .zip files) and the inclusion of the root-related files. The following are the only "extra" (non META-INF files) are the following four files (which were inserted into the the part1.zip file):
Code:
logwrapper\bin\logwrapper (koush's bootstrap recovery exploit)
root\app\Superuser.apk (superuser whitelist app)
root\bin\busybox (root tools/utilities)
root\bin\su (superuser shell)
2. Analyzing the files' contents:
A. First, I extracted both of p3droid's pre-rooted two-part GingerBread .zip files into one common directory.
B. Next, I extracted the contents of the 2.3.3 (.596) official GingerBread OTA (update.zip) into its own directory.
C. Next, I used the fciv.exe utility to generate MD5 checksums for all of the files.
D. I then compared output of the generated MD5 files: the contents of the two-part, pre-rooted GB files are identical to the official GB 2.3.3 OTA with the exception of the inclusion of four extra root files mentioned above.
3. Analyzing the update-script files
Finally, I then compared the update-script files in each of the above filesets. Here are the differences that I observed:
1. The official OTA's update-script includes various assertions to ensure that you are indeed a Moto Droid X of the proper O/S release:
Code:
assert(file_getprop("/system/build.prop", "ro.build.fingerprint") == "verizon/shadow_vzw/cdma_shadow/shadow:2.2.1/VZW/23.340:user/ota-rel-keys,release-keys" ||
file_getprop("/system/build.prop", "ro.build.fingerprint") == "verizon/shadow_vzw/cdma_shadow:2.3.3/4.5.1_57_DX5-26/110429:user/release-keys");
assert(getprop("ro.product.device") == "cdma_shadow" ||
getprop("ro.build.product") == "cdma_shadow");
These assertion checks are not present in p3droid's update-script files.
2. p3droid's update-script installs the root-related logwrapper\bin\logwrapper, root\app\SuperUser.apk, root\bin\busybox, and root\bin\su files.
3. Lastly, p3droid's update-script makes the requisite symbolic links to busybox for all of the various commands/utilities that busybox supports.
4. There are a few minor spelling and order differences in the update-script filesets, but nothing significant.
------------------------------------------------------
That's it .
The only outstanding question in my mind is why it was necessary to create two .zip files. I'm sure there's a good reason...I just don't know what it is right now . My son has a Droid 2 Global that is about to get its GingerBread update and I was considering using this information to build a two-part .zip set for him if it weren't for this lingering question...
Congrats and thanks again to p3droid and Team Black Hat for making this GingerBread rooting method for all of us.
Cheers!