[Soot-list] Regenerating Androidmanifest.xml file after Instrumenting Android

Modhi Alsobiehy m99m20 at hotmail.com
Thu Oct 16 09:13:03 EDT 2014


Hi Steven,


-- Thank you for your fast reply!

-- Something I forgot to mention, is it necessary to call:

 axmlh.getRoot().addChild(newAXmlNode);

because when I checked the new manifest, I found that the permission was added twice- I believe the first addition because of referencing the parent node-!!



-- This is the code I used after doing the required changes in the axmlhandler,

byte[] axmlBA = axmlh.toByteArray();





 

FileOutputStream fileOuputStream = new FileOutputStream(".\\AndroidManifest.xml"); 



fileOuputStream.write(axmlBA);



fileOuputStream.close();









 

List<File> fileList = new ArrayList<File>();



File newManifest = new File(".\\AndroidManifest.xml");



fileList.add(newManifest);





 

ApkHandler apkH = new ApkHandler(apk);



apkH.addFilesToApk(fileList);





and it is generating the following exception:


Exception in thread "main" java.lang.RuntimeException: could not rename the file D:\apks\location.apk to C:\Users\owner\AppData\Local\Temp\location.apk8599660687333204456.tmp

at soot.jimple.infoflow.android.axml.ApkHandler.addFilesToApk(Unknown Source)

at soot.jimple.infoflow.android.axml.ApkHandler.addFilesToApk(Unknown Source)
Thank you!





Sent from Windows Mail





From: Steven Arzt
Sent: ‎Thursday‎, ‎October‎ ‎16‎, ‎2014 ‎4‎:‎51‎ ‎AM
To: Modhi Alsobeihy
Cc: soot-list at CS.McGill.CA, soot-list at sable.mcgill.ca






Hi Modhi,

 

I am glad to hear that your original problem has been resolved.

 

What do you mean by “no luck”? What exactly happens? What exactly are you trying (i.e. give me the code)?`

 

Best regards,

  Steven

 



Von: soot-list-bounces at CS.McGill.CA [mailto:soot-list-bounces at CS.McGill.CA] Im Auftrag von Modhi Alsobiehy
Gesendet: Donnerstag, 16. Oktober 2014 07:32
Cc: soot-list at CS.McGill.CA; soot-list at sable.mcgill.ca
Betreff: Re: [Soot-list] Regenerating Androidmanifest.xml file after Instrumenting Android

 



Hi Steven,







I updated the jars and the problem resolved! Thank you!







Another thing please!


I have been trying to add the new manifest into the apk using the apkhandler but no luck! 


I would really appreciate any help!! 

 


-Best,


Modhi



On Oct 13, 2014, at 7:38 AM, "Steven Arzt" <Steven.Arzt at cased.de> wrote:



Hi Modhi,

 

I cannot reproduce your problem with the newest version of FlowDroid. I have fixed some issues with the XML manipulation classes over the last week, so please try again. This is my code:

 

             AXmlNode newAXmlNode = new AXmlNode("uses-permission", null, axmlh.getRoot());

             newAXmlNode.addAttribute(new AXmlAttribute<String>("name", "android.permission.READ_LOGS",

                           "http://schemas.android.com/apk/res/android"));

             axmlh.getRoot().addChild(newAXmlNode);

 

Make sure to get the namespace right, that was wrong in your code.

 

Best regards,

  Steven

 



Von: soot-list-bounces at CS.McGill.CA [mailto:soot-list-bounces at CS.McGill.CA] Im Auftrag von Modhi Alsobiehy
Gesendet: Montag, 13. Oktober 2014 00:42
An: Steven Arzt
Cc: soot-list at CS.McGill.CA; soot-list at sable.mcgill.ca
Betreff: Re: [Soot-list] Regenerating Androidmanifest.xml file after Instrumenting Android

 



Your quick response is highly appreciated!

 


-Thank you!


Modhi



On Oct 9, 2014, at 12:34 AM, "Modhi Alsobiehy" <m99m20 at hotmail.com> wrote:





Hi Steven,


I'm getting the following exception from the line calling toByteArray() and I couldn’t figure out how to fix it or what I have done wrong!!


Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

at pxb.android.axml.AxmlWriter$NodeImpl.write(AxmlWriter.java:238)

at pxb.android.axml.AxmlWriter$NodeImpl.write(AxmlWriter.java:254)

at pxb.android.axml.AxmlWriter.toByteArray(AxmlWriter.java:388)

at soot.jimple.infoflow.android.axml.AXmlHandler.toByteArray(Unknown Source)


this is the code responsible for a regenerating the manifest file, the axmlhandler instance is updated with the new axmlnode 


 


File apkFile = new File(apk);

ProcessManifest pm = new ProcessManifest(apkFile);

AXmlHandler axmlh = pm.getAXml(); 

AXmlNode newAXmlNode = new AXmlNode("uses-permission", null, axmlh.getRoot());

newAXmlNode.addAttribute(new AXmlAttribute("name", "android.permission.READ_LOGS", null));

AXmlNode temp = axmlh.getRoot().addChild(newAXmlNode);

byte[] axmlBA = axmlh.toByteArray();

FileOutputStream fileOuputStream = new FileOutputStream(".\\AndroidManifest.xml"); 

fileOuputStream.write(axmlBA);

fileOuputStream.close();


 Thank you,,


Modhi



 


 


 



From: Steven Arzt
Sent: ‎Monday‎, ‎September‎ ‎29‎, ‎2014 ‎7‎:‎20‎ ‎AM
To: Modhi Alsobeihy
Cc: soot-list at sable.mcgill.ca, soot-list at CS.McGill.CA


 



_______________________________________________
Soot-list mailing list
Soot-list at CS.McGill.CA
https://mailman.CS.McGill.CA/mailman/listinfo/soot-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20141016/124dae59/attachment-0003.html 


More information about the Soot-list mailing list