[Verizon Samsung Galaxy S III] mybook4:
Awesome! Running short on time right now, but I definitely will be using the tutorial. Thanks!

It is possible to flash an i747 ROM to the i535 as long as the ROM CWM zip installs nothing more than some data (mmcblk0p15), system (mmcblk0p14), and kernel (mmcblk0p7) (no modem or bootloader partitions). newuser was able to flash a stock rooted ROM (see this post).

newuser, were you able to get a working AT&T GSM/EDGE connection (but not HSPA) when you flashed the i747 ROM or did you have no cellular connection at all? Did you try changing any settings using the "Phone Info" app?

Since that ROM has the i747 version of SecSettings.apk, an i747 SecSettings.apk was run on a i535. newuser wasn't able to get HSPA+ to work after flashing that ROM, so that may tell us that control is indeed at some deeper level.

We could decompile the i747 SecSettings.apk to compare it to the i535 SecSettings.apk, but if they are both calling Android internal API functionality (in framework.jar?), and the i747 ROM which was flashed had the i747 ROM framework, would it be better to compare framework.jar? What are your thoughts? As you can probably tell, I'm not an expert on this, so if I butchered any of that please correct me so future readers of this thread aren't misinformed.

Good points.

All, I Installed vbindiff from the Ubuntu Software Center

You can also download vbindiff from the link E:V:A provided and compile by running:

autconf

./configure

make

I ran vbindiff on Ubuntu 12.04 LTS. Someone trying to compile this may have to use their package manager to obtain necessary packages. I did a little test compile and only had to get the autoconf package (by running "sudo apt-get install autoconf" in terminal).

There is also a windows version with pre-compiled exe, but I spend most of my time in Linux, so it was more convenient for me to grab the Linux version rather than boot into windows to run the program. If you don't have Linux installed, you can always run Ubuntu in a virtual machine (I suggest virtualbox).

I started comparing files from the list below of mismatching files that are the same size (see this post for background info). I did not compare files with different sizes. Like E:V:A said, the goal is to see exactly what is different between files of the same size (a few bits changed or entire blocks).

As this is quite time consuming, follow up will be in subsequent posts. I encourage anyone who would like to help to go for it. We'll definitely need the help and it's a great learning experience.

Essentially, I'm going to

1) mount both the i747 UCLG1 and i535 VRLG1 modem partitions (see this post for background info),

2) pick a file from the list below (that hasn't already been looked at), and

3) open both files with vbindiff in terminal (for example "vbindiff ~/VRLG1/image/dsps.mdt ~/UCLG1/image/dsps.mdt") (linux compilation instructions within this post).

4) compare files and post file name, file size, and differences in red (If there is something I see that's interesting, I'll copy and paste from vbindiff). It's important to highlight the differences in red so we are sure we are only looking at the differences. If the differences are too comprehensive to list, explain that.

Does anyone know of a more automated way to do a binary diff on two files and output whole lines with changes in another color (see example as this is hard to describe)? Manually copying and pasting, then using the forum tools to highlight in red is WAY too time consuming and prone to error. Even using diffnow (described below) gets time consuming.

Example of a way to presenting something interesting in the thread:

VRLG1:

UCLG1:

Alternative Method:

Found this site http://www.diffnow.com/ that will allow us to perform a binary diff on the files and share a link. It handles up to 1 MB files and will save the page for a year. If anyone knows of a better alternative, please post!

Mismatching files with the same size (different md5 hash for both ATT and VZW)

dsps.b02

dsps.b05

dsps.b00

dsps.b03

dsps.b01

dsps.b04

dsps.mdt

modem.b00

modem.b06 (different size)

modem.b04 (different size)

modem.b03 (different size)

modem.b01

modem.b07 (different size)

modem.b02 (different size)

modem.mdt

modem_f2.b04

modem_f2.b25

modem_f2.b05

modem_f1.b03

modem_f1.b22

modem_f2.b14

modem_f1.b26

modem_f2.mdt

modem_f2.b02

modem_f1.b08

modem_f1.b05

modem_f1.b07

modem_f2.fli

modem_f1.b25

modem_f2.b10

modem_f2.b21

modem_f1.b14

modem_f2.b13

modem_f2.b07

modem_f1.b29

modem_f1.b23

modem_f1.b00

modem_f1.b01

modem_f2.b00

modem_f2.b03

modem_f1.b04

modem_f2.b26

modem_f1.b02

modem_f1.mdt

modem_f1.b13

modem_f2.b01

modem_f2.b29

modem_f2.b22

modem_f1.fli

modem_f2.b06

modem_f2.b08

modem_f1.b09

modem_f2.b23

modem_f1.b21

modem_f2.b09

tzapps.b00

tzapps.b01

tzapps.mdt

dxhdcp2.b03 (differing size)

dxhdcp2.b01

dxhdcp2.b02

dxhdcp2.b00

dxhdcp2.mdt

q6.b00

q6.b01

q6.b05

q6.b06

q6.b04

q6.b03

q6.mdt

wcnss.b04

wcnss.b00

wcnss.b01

wcnss.b02

Reverse Engineering Machine Code:

Another road we could go down is actually reverse engineering the the binary machine code to ARM assembly, then to C. Ralekdev provided a little overview on how he did it for the bootloader unlock effort. The steps he provided were for bootloader partitions. Not sure if we'd have to change a few things for the modem stuff.

From the previous post's "ls -al" output,

VRLG1 total 42496 (KB)

UCLG1 total 43088 (KB)

Is this what you were looking for? Am I misinterpreting your question?

Good point. I used the following modems

AT&T UCLG1 modem CWM zip from the ATT Modem Thread

VZW VRLG1 modem CWM zip from the VZW Modem thread

---------- Post added at 11:58 AM ---------- Previous post was at 11:46 AM ----------

File Name:

dsps.b02

File Size:

147456 bytes

Observations about differences:

Differences between VRLG1 and UCLG1 are many (too comprehensive to list). Differences in whole blocks as well as individual bytes.

Manually open in vbindiff or see this diffnow report for differences. VZW file on the left, ATT file on the right.