Thanks Yaron, but my requirement is parsing and modifying arsc file at
runtime on the device.

So my next question is can apktool be ported on device. What I mean is
since the source code is available are there any lib/frameworks (that
apktool) which are only available for desktop and not for android.


On Thu, Jul 11, 2013 at 8:13 AM, Yaron Reinharts
<[email protected]>wrote:

>  No need to reinvent the wheel:
> https://code.google.com/p/android-apktool/
>
> Hope this helps
> Yaron
>
> On 07/11/2013 02:13 AM, giles ian wrote:
>
> Hi Illyoung Choi,
> *
> *
> *Is it possible for you to share the code for the entire thing. i.e. *
> *
> *
> *1.Parsing*
> *2. Modifying
> *
> On Tuesday, June 21, 2011 8:09:12 PM UTC-7, Illyoung Choi 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
> ---
> You received this message because you are subscribed to the Google Groups
> "Android Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
>
> --
> Yaron Reinharts
> Smart Drive 
> Applicationshttp://www.poncho.co.il/gateaway.phphttps://market.android.com/details?id=com.poncho.gsm.gate.activities
>
>   --
> --
> 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
> ---
> You received this message because you are subscribed to the Google Groups
> "Android Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to