[Soot-list] Soot Body.getUnits() does not get ALL units

Steven Arzt Steven.Arzt at cased.de
Wed Apr 8 04:00:49 EDT 2015


Hi Xinxin,

 

Then I have to agree with Eric that such a behavior is completely impossible: Soot reads in the APK file, and stores the unit in the units collections of the respective SootMethods. This is also the only source from which the units are then written out to Jimples files. If the Jimple files on disk are complete, the unit collections must have been as well. The output writer does not inference any new units.

 

Best regards,

  Steven

 

Von: Xinxin Jin [mailto:xinxinjin89 at gmail.com] 
Gesendet: Mittwoch, 8. April 2015 09:57
An: Steven Arzt
Cc: Bodden, Eric; soot-list at cs.mcgill.ca
Betreff: Re: [Soot-list] Soot Body.getUnits() does not get ALL units

 

Hi Steven,

 

My code is from an Android app. I use Dexpler to transform the apk to jimple files. 

 

Thanks,

 

On Wed, Apr 8, 2015 at 12:54 AM, Steven Arzt <Steven.Arzt at cased.de> wrote:

Hi Xinxin,

 

Can you provide a complete test case? From where did you read in your Jimple code?  Did you parse jimple files on disk or Java class files, or an Android APK?

 

Best regards,

  Steven

 

Von: soot-list-bounces at CS.McGill.CA [mailto:soot-list-bounces at CS.McGill.CA] Im Auftrag von Xinxin Jin
Gesendet: Mittwoch, 8. April 2015 09:07
An: Bodden, Eric
Cc: soot-list at cs.mcgill.ca
Betreff: Re: [Soot-list] Soot Body.getUnits() does not get ALL units

 

It sounds unreasonable to me too, but that is indeed the problem I encountered ... So I'm just wondering if there are some corner cases not handled by Soot or not ?

 

On Tue, Apr 7, 2015 at 11:40 PM, Bodden, Eric <eric.bodden at sit.fraunhofer.de> wrote:

Hi Xinxin.

I am afraid that does not make much sense. By definition, the units of a body are the ones returned by getUnits(). This is a very strong invariant that should never be broken by Soot.

Cheers,
Eric


> On 08.04.2015, at 08:02, Xinxin Jin <xinxinjin89 at gmail.com> wrote:
>
> Hi there,
>
> I got a weird problem: Sometimes Body.getUnits() does not list all the units of a method. The following is one example:
>
> Simplified code snippet:
>
> void foo() {
>     ...
>     BasicHttpClient basicClient = new BasicHttpClient();
>     ...
> }
>
> ​And in the Jimple file, there are two statements related with "new BasicHttpClient()" :
>
> $r5 = new com.turbomanage.httpclient.BasicHttpClient;
> specialinvoke $r5.<com.turbomanage.httpclient.BasicHttpClient: void <init>()>(); ​
>
> ​However, when I use retriveActiveBody().getUnits() to print out all the units of foo(), I can only see one statement:
> specialinvoke $r5.<com.turbomanage.httpclient.BasicHttpClient: void <init>()>()​
>
> I don't know why getUnits() cannot obtain "$r5 = new com.turbomanage.httpclient.BasicHttpClient" ?
> ​What kind of units are ignored by Soot ?​
>
> ​Thanks a lot for any advices !​
>
>
>
> --
> Xinxin

> _______________________________________________
> Soot-list mailing list
> Soot-list at CS.McGill.CA
> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list

--
Prof. Eric Bodden, Ph.D., http://sse.ec-spride.de/ http://bodden.de/
Head of Secure Software Engineering at Fraunhofer SIT, TU Darmstadt and EC SPRIDE
Tel: +49 6151 16-75422 <tel:%2B49%206151%2016-75422>     Fax: +49 6151 869-127 <tel:%2B49%206151%20869-127> 
Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt





 

-- 

Xinxin





 

-- 

Xinxin

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150408/7138a98b/attachment-0001.html 


More information about the Soot-list mailing list