[Soot-list] What is the meaning of ActiveBody
Arzt, Steven
steven.arzt at sit.fraunhofer.de
Fri Jan 19 07:42:39 EST 2018
Hi Sep,
Apparently, your Soot instance is not loaded at all. You might want to have a look at the Soot Survivor’s Guide [1], especially section 4.3.
Best regards,
Steven
[1] http://www.brics.dk/SootGuide/sootsurvivorsguide.pdf
From: 周书林 [mailto:zhoushulin1992 at gmail.com]
Sent: Friday, January 19, 2018 12:01 PM
To: Arzt, Steven <steven.arzt at sit.fraunhofer.de>; soot-list at cs.mcgill.ca
Subject: Re: [Soot-list] What is the meaning of ActiveBody
Hi Steven,
I run my own Transformer on hadoop, there is indeed a body in a method, but I cannot get its body.
I have tried the retrieveActiveBody(), but there is a RuntimeException:
java.lang.RuntimeException: No method source set for method <org.apache.hadoop.io.RawComparator: int compare(byte[],int,int,byte[],int,int)>
at soot.SootMethod.getBodyFromMethodSource(SootMethod.java:123)
at soot.SootMethod.retrieveActiveBody(SootMethod.java:385)
at com.sep.MyTransformer.analyzeSootMethod(MyTransformer.java:120)
at com.sep.MyTransformer.analyzeSootClass(MyTransformer.java:113)
at com.sep.MyTransformer.internalTransform(MyTransformer.java:60)
at soot.SceneTransformer.transform(SceneTransformer.java:39)
at soot.Transform.apply(Transform.java:90)
at soot.ScenePack.internalApply(ScenePack.java:40)
at soot.Pack.apply(Pack.java:118)
at soot.PackManager.runWholeProgramPacks(PackManager.java:565)
at soot.PackManager.runPacksNormally(PackManager.java:455)
at soot.PackManager.runPacks(PackManager.java:384)
at soot.Main.run(Main.java:278)
at soot.Main.main(Main.java:147)
at com.sep.Sample.main(VarLocation.java:47)
...
What should I do in such situation?
Best regards,
Sep
2018-01-19 18:33 GMT+08:00 Arzt, Steven <steven.arzt at sit.fraunhofer.de<mailto:steven.arzt at sit.fraunhofer.de>>:
Hi Sep,
A body is a body. “ActiveBody” only means that there is a body which has been loaded and that is associated with that method. For a simplified understanding, just speak of bodies. If getActiveBody() doesn’t find a body, that may have multiple reasons:
- The method is a phantom, is abstract, or part of an interface
- The method should have a body, but it has not been loaded yet. Try retrieveActiveBody() instead
- The method was created in your code, and no body has been associated with it yet
Best regards,
Steven
From: 周书林 [mailto:zhoushulin1992 at gmail.com<mailto:zhoushulin1992 at gmail.com>]
Sent: Friday, January 19, 2018 11:21 AM
To: Arzt, Steven <steven.arzt at sit.fraunhofer.de<mailto:steven.arzt at sit.fraunhofer.de>>; soot-list at cs.mcgill.ca<mailto:soot-list at cs.mcgill.ca>
Subject: Re: [Soot-list] What is the meaning of ActiveBody
Hi Steven,
Thank you for your explanation. But I am still confused with the difference between the concept of body and ActiveBody. How could I always get the body of a SootMethod? Because when I use the SootMethod API "getActiveBody()", there are some SootMethods that have no ActiveBody.
Best regards,
Sep
2018-01-19 18:03 GMT+08:00 Arzt, Steven <steven.arzt at sit.fraunhofer.de<mailto:steven.arzt at sit.fraunhofer.de>>:
Hi Sep,
The body of a method contains the statements inside that method as well as the local variable definitions and the exception handlers.
Best regards,
Steven
From: Soot-list [mailto:soot-list-bounces at cs.mcgill.ca<mailto:soot-list-bounces at cs.mcgill.ca>] On Behalf Of ???
Sent: Friday, January 19, 2018 3:46 AM
To: soot-list at cs.mcgill.ca<mailto:soot-list at cs.mcgill.ca>
Subject: [Soot-list] What is the meaning of ActiveBody
I am novice in Java analysis and Soot. I am not familiar with the concept of ActiveBody in SootMethod. (The relevant APIs are hasActiveBody() and getActiveBody() ). Could somebody explain the meaning of ActiveBody? When a SootMethod has ActiveBody? If not, how to get access to the Body of this kind of SootMethod?
Thank you very much!
Sincerely.
Sep.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20180119/cd8d088f/attachment-0001.html>
More information about the Soot-list
mailing list