What exactly would the use for this be, besides piracy? I suggest this post for deletion.
On Jun 22, 11:09 am, Illyoung Choi <[email protected]> wrote: > Hi All. > > Last day, I made a simple application for parsing an Android Resource > File (*.arsc) and modifying resource strings. > > I think this thing might be a help for someone, so I'll share the > structure of *.arsc that I understood. > > Since I could not spend many hours for this, my understanding is not > perfect and might be slightly wrong. > > I patched string resource from *.apk. > Simply extracted *.apk with 7zip and got the resources.arsc file. > > Below are the structure of *.arsc > > struct ANDROID_RESOURCE_HEADER > { > int signature; // 0x000c0002, I assume this is a signature > int nImageLength; // total ARSC file size (bytes) > int nUnknown1[2]; // still unknown (not important for modifying > strings) > int nStringBlockLength; // total StringBlock(see below) size > int nStringCount; // total number of String Resources > int nUnknown2[4]; // still unknown (not important for modifying > strings) > > } > > "struct ANDROID_RESOURCE_HEADER" is a header of ARSC file image. > So simply you can read this header information from file. > > After this header, you will meet the StringBlock > > StringBlock has 2Sections > { > [String Offset] > [String Data] > > } > > String Offset Section has Offset Values of Specific Strings from > StringBlock Start Address. > > String Data Section has 2 Part > > String Data > { > [Length] > [String] > > } > > Length part is 2byte. but, in AscII Mode, uses only 1byte. > Before reading String, you must check whether it is "Unicode" or > "AscII" format. > > in Unicode format, Length part will be used with 2bytes. > normally it is "0x??, 0x00" (only if it is not longer than 256 bytes) > > in AscII format, Length part will be used with 1bytes. but, they also > used second byte for mirroring. > if string length has a value 7, you will meet "0x07, 0x07" > > So, I checked whether both bytes have same value to check string > format. > > Lastly, actual string data will be after this length part with "Zero > Terminal" > in Unicode format, surely, Zero Terminal will be 2 byte of zero. > > Whenever you change the string of this ARSC file, you should > recalculate these. > Length Part of String Data > String Offset of StringBlock > nImageLength of Header > nStringBlockLength of Header > > After doing these all. > Simply, remove all JAR Signature (META-INF folder) from package. > Re-Archive with Zip and rename with *.apk. > Resign with your certificate by using "jarsigner" of JDK > > Thanks. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

