[Soot-list] Use SOOT to analyse Java library.

christian.grosse at comhem.se christian.grosse at comhem.se
Thu Apr 9 19:27:48 EDT 2015


I tried this simple program:

public class Test 
{
    public static void main(String[] args)
    {
        String newargs[] = {
        "-w",
        "-include-all",
        "-cp","C:\\Program Files (x86)\\Java\\jre1.8.0_31",
        "-d", "c:\\Temp",
        "-process-dir","C:\\Program Files (x86)\\Java\\jre1.8.0_31\\lib\\rt.jar",
        "-process-dir","C:\\Program Files (x86)\\Java\\jre1.8.0_31\\lib\\jce.jar",
        "-process-dir","C:\\Program Files (x86)\\Java\\jre1.8.0_31\\lib\\jsse.jar"};
        soot.Main.main(newargs);        
    }
}

But after a while I get:
.
.
.
Transforming java.awt.SecondaryLoop... 
Transforming java.awt.SequencedEvent$2... 
Transforming java.awt.SplashScreen$1... 
Transforming java.awt.SystemColor... 
soot.SootMethodRefImpl$ClassResolutionFailedException: Class soot.dummy.InvokeDynamic doesn't have method updateSystemColors([]) : sun.awt.AWTAccessor$SystemColorAccessor; failed to resolve in superclasses and interfacesLooking in soot.dummy.InvokeDynamic which has methods []

    at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:164)
    at soot.SootMethodRefImpl.resolve(SootMethodRefImpl.java:109)
    at soot.jimple.internal.AbstractInvokeExpr.getMethod(AbstractInvokeExpr.java:67)
    at soot.jimple.validation.InvokeArgumentValidator.validate(InvokeArgumentValidator.java:34)
    at soot.jimple.JimpleBody.validate(JimpleBody.java:117)
    at soot.jimple.JimpleBody.validate(JimpleBody.java:102)
    at soot.baf.BafBody.<init>(BafBody.java:63)
    at soot.baf.Baf.newBody(Baf.java:560)
    at soot.PackManager.convertJimpleBodyToBaf(PackManager.java:976)
    at soot.PackManager.runBodyPacks(PackManager.java:932)
    at soot.PackManager.runBodyPacks(PackManager.java:608)
    at soot.PackManager.runBodyPacks(PackManager.java:507)
    at soot.PackManager.runPacksNormally(PackManager.java:484)
    at soot.PackManager.runPacks(PackManager.java:391)
    at soot.Main.run(Main.java:244)
    at soot.Main.main(Main.java:152)
    at Test.main(Test.java:22)



/Christian G


From: Zhoulai 
Sent: Thursday, April 09, 2015 6:10 PM
To: christian.grosse at comhem.se 
Cc: SOOT mailing list 
Subject: Re: [Soot-list] Use SOOT to analyse Java library.

Hi, 

The right way to do these things can be found at 


Soot Survivor's Guide p16-21,
                  Sect. 4  Soot as a stand-alone tool 

Cheers,

Zhoulai

On Thu, Apr 9, 2015 at 8:56 AM, <christian.grosse at comhem.se> wrote:

  Hello!

  I have a couple of question about SOOT and the Java library.

  How do I get SOOT to load & parse (so I can get Jimple bodies) for say the entire java 1.x library. 

  Do I have to supply SOOT with the classes (or source code) as arguments in the call to Main.main(args) (see code below)? 

  Do I have to create a main class to get it to work? Or can SOOT analyze all classes I provide as arguments to Main.main(args) call without a main class & method?


  Example:

  public class Main 
  { 
  public static void main(String[] args) 
  {

    //TODO: Hook in with my own awesome transform.
    //TODO: Create a main class ???
    . 
    .
    .

    //call soot.
    Main.main(args);
  }
  }

  Best regards,
  Christian G. 



  _______________________________________________
  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: https://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20150410/0afb0b47/attachment.html 


More information about the Soot-list mailing list