<div dir="ltr">Test class:<div><br></div><div><div>public class Decomp {</div><div> </div><div> private static final String FUUU = "fdgsfdhsrthd"; </div><div> private static final String AAAA = "olololo";</div><div> </div><div> public static void main(String[] args) {</div><div><br></div><div> System.out.println(FUUU);</div><div> System.out.println(AAAA);</div><div><br></div><div> }</div><div><br></div><div>}</div></div><div><br></div><div>Test transformation:</div><div><br></div><div><div> @Override</div><div> protected void internalTransform(Body body, String phaseName, Map<String, String> options) {</div><div> </div><div> System.out.println(body.getMethod().getSignature());</div><div> </div><div> int weight = soot.jbco.Main.getWeight(phaseName, body.getMethod().getSignature());</div><div> if (weight == 0){ </div><div> return;</div><div> }</div><div><br></div><div> System.out.println(" --- --- --- --- --- --- ");</div><div><br></div><div> QueueReader<Edge> edgeList = Scene.v().getCallGraph().listener();</div><div> while (edgeList.hasNext()) {</div><div> Edge edge = edgeList.next();</div><div> if(edge.isClinit() && edge.src().getDeclaringClass().getName().equalsIgnoreCase(body.getMethod().getDeclaringClass().getName())){</div><div> System.out.println(edge.src().getName()); </div><div> System.out.println(edge.tgt().getName());</div><div><br></div><div> Iterator<Unit> itu = edge.tgt().getActiveBody().getUnits().snapshotIterator();</div><div> while(itu.hasNext()){</div><div> Unit u = itu.next();</div><div> System.out.println(" --- unit : " + u.toString());</div><div> }</div><div><br></div><div> System.out.println("PL size : " + edge.tgt().getActiveBody().getParameterLocals().size());</div><div> System.out.println("DB size : " + edge.tgt().getActiveBody().getDefBoxes().size());</div><div> } </div><div><br></div><div> }</div><div> System.out.println(" --- --- --- --- --- --- ");</div><div> }</div></div><div><br></div><div><br></div><div><span style="font-size:12.8000001907349px">Hope this helps.</span></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-02-17 9:25 GMT+03:00 Bodden, Eric <span dir="ltr"><<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Roman can you post here the entire and unmodified source code of the respective class?<br>
<br>
Cheers,<br>
Eric<br>
<div class="HOEnZb"><div class="h5"><br>
> On 16.02.2015, at 23:52, Roman Petriev <<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>> wrote:<br>
><br>
> I tried to use call graph from scene and I found clinit!<br>
> But ... It contains in my test app:<br>
><br>
> staticinvoke <java.lang.Object: void registerNatives()>()<br>
> return<br>
><br>
> or<br>
><br>
> staticinvoke <java.lang.System: void registerNatives()>()<br>
> <java.lang.System: java.io.InputStream in> = null<br>
> <java.lang.System: java.io.PrintStream out> = null<br>
> <java.lang.System: java.io.PrintStream err> = null<br>
> <java.lang.System: java.lang.SecurityManager security> = null<br>
> <java.lang.System: java.io.Console cons> = null<br>
> return<br>
><br>
> But I want to get/set String constant ...<br>
><br>
><br>
> P.s. Thanks for any help!<br>
><br>
><br>
> 2015-02-17 0:29 GMT+03:00 Marc Miltenberger <<a href="mailto:Marc.Miltenberger@cased.de">Marc.Miltenberger@cased.de</a>>:<br>
> The method is called <clinit> and has the subsignature<br>
> void <clinit>()<br>
><br>
> Am 16.02.2015 um 21:56 schrieb Roman Petriev:<br>
> > Well ... How can I get access to clinit with soot? BodyTransformer<br>
> > couldn't find this method.<br>
> ><br>
> > 2015-02-16 21:58 GMT+03:00 Marc-André Laverdière<br>
> > <<a href="mailto:marc-andre.laverdiere-papineau@polymtl.ca">marc-andre.laverdiere-papineau@polymtl.ca</a><br>
> > <mailto:<a href="mailto:marc-andre.laverdiere-papineau@polymtl.ca">marc-andre.laverdiere-papineau@polymtl.ca</a>>>:<br>
> ><br>
> > If the field is static, then it will be in clinit...<br>
> ><br>
> > Marc-André Laverdière-Papineau<br>
> > Doctorant - PhD Candidate<br>
> ><br>
> > On 16/02/15 01:25 PM, Roman Petriev wrote:<br>
> > > Unfortunately, it didn't help :( ....<br>
> > ><br>
> > > Simplest <init> contains 3 items, e.g.:<br>
> > ><br>
> > > r0 := @this: decomp.Decomp<br>
> > > specialinvoke r0.<java.lang.Object: void <init>()>()<br>
> > > return<br>
> > ><br>
> > > Decomp class contains 2 constants.<br>
> > ><br>
> > > Do you have any ideas else?<br>
> > ><br>
> > > P.s. javap:<br>
> > ><br>
> > > private static final java.lang.String FUUU;<br>
> > > Signature: Ljava/lang/String;<br>
> > > flags: ACC_PRIVATE, ACC_STATIC, ACC_FINAL<br>
> > ><br>
> > > ConstantValue: String fdgsfdhsrthd<br>
> > ><br>
> > ><br>
> > > private static final java.lang.String AAAA;<br>
> > > Signature: Ljava/lang/String;<br>
> > > flags: ACC_PRIVATE, ACC_STATIC, ACC_FINAL<br>
> > ><br>
> > > ConstantValue: String olololo<br>
> > ><br>
> > > Probably, constants were initialized somewhere else ...<br>
> > ><br>
> > ><br>
> > > 2015-02-16 14:22 GMT+03:00 Bodden, Eric <<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a> <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a>><br>
> > > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a><br>
> > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a>>>>:<br>
> > ><br>
> > > Hi Roman.<br>
> > ><br>
> > > You will find the appropriate assignment within the body of the<br>
> > > method <init> within SomeClass. You need to modify the assignment there.<br>
> > ><br>
> > > Hope this helps,<br>
> > > Eric<br>
> > ><br>
> > > > On 16.02.2015, at 11:15, Roman Petriev <<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>><br>
> > > <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>>>> wrote:<br>
> > > ><br>
> > > > I do body transformation (Jimple) for JBCO, and I need to do this<br>
> > > for code obfuscation.<br>
> > > ><br>
> > > > 2015-02-16 13:10 GMT+03:00 Roman Petriev <<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>><br>
> > > <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>>>>:<br>
> > > > Ok.<br>
> > > ><br>
> > > > E.g.:<br>
> > > ><br>
> > > > public class SomeClass{<br>
> > > ><br>
> > > > //I want to get/set value of this constant.<br>
> > > > private final String SOME_PARAMETER = "value";<br>
> > > ><br>
> > > > public static void main(String[] args) {<br>
> > > ><br>
> > > > //................<br>
> > > ><br>
> > > > }<br>
> > > > }<br>
> > > ><br>
> > > > It's possible?<br>
> > > ><br>
> > > ><br>
> > > > 2015-02-16 9:26 GMT+03:00 Bodden, Eric<br>
> > > <<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a><br>
> > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a>><br>
> > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a><br>
> > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de">eric.bodden@sit.fraunhofer.de</a>>>>:<br>
> > > > Hi Roman.<br>
> > > ><br>
> > > > If you describe your problem in more detail then there is a<br>
> > > better chance that people will be able to help you out.<br>
> > > ><br>
> > > > Best wishes,<br>
> > > > Eric Bodden<br>
> > > ><br>
> > > > > On 15.02.2015, at 22:22, Roman Petriev <<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>><br>
> > > <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>>>> wrote:<br>
> > > > ><br>
> > > > > Hi all!<br>
> > > > ><br>
> > > > > I want to get/set initial value of method field<br>
> > > (java.lang.String). How I can do it?<br>
> > > > ><br>
> > > > > Best regards,<br>
> > > > > Roman.<br>
> > > > ><br>
> > > > > _______________________________________________<br>
> > > > > Soot-list mailing list<br>
> > > > > <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a> <mailto:<a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a>><br>
> > <mailto:<a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a> <mailto:<a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a>>><br>
> > > > > <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
> > > ><br>
> > > > --<br>
> > > > Prof. Eric Bodden, Ph.D., <a href="http://sse.ec-spride.de/" target="_blank">http://sse.ec-spride.de/</a><br>
> > <a href="http://bodden.de/" target="_blank">http://bodden.de/</a><br>
> > > > Head of Secure Software Engineering at Fraunhofer SIT, TU<br>
> > > Darmstadt and EC SPRIDE<br>
> > > > Tel: +49 6151 16-75422 Fax: +49 6151 869-127<br>
> > > > Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt<br>
> > > ><br>
> > > ><br>
> > > ><br>
> > ><br>
> > > --<br>
> > > Prof. Eric Bodden, Ph.D., <a href="http://sse.ec-spride.de/" target="_blank">http://sse.ec-spride.de/</a><br>
> > <a href="http://bodden.de/" target="_blank">http://bodden.de/</a><br>
> > > Head of Secure Software Engineering at Fraunhofer SIT, TU<br>
> > Darmstadt<br>
> > > and EC SPRIDE<br>
> > > Tel: +49 6151 16-75422 Fax: +49 6151 869-127<br>
> > > Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt<br>
> > ><br>
> > ><br>
> > ><br>
> > ><br>
> > > _______________________________________________<br>
> > > Soot-list mailing list<br>
> > > <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a> <mailto:<a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a>><br>
> > > <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
> > ><br>
> > _______________________________________________<br>
> > Soot-list mailing list<br>
> > <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a> <mailto:<a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a>><br>
> > <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > Soot-list mailing list<br>
> > <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
> > <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
> ><br>
><br>
> _______________________________________________<br>
> Soot-list mailing list<br>
> <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
> <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
><br>
> _______________________________________________<br>
> Soot-list mailing list<br>
> <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
> <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
<br>
--<br>
Prof. Eric Bodden, Ph.D., <a href="http://sse.ec-spride.de/" target="_blank">http://sse.ec-spride.de/</a> <a href="http://bodden.de/" target="_blank">http://bodden.de/</a><br>
Head of Secure Software Engineering at Fraunhofer SIT, TU Darmstadt and EC SPRIDE<br>
Tel: +49 6151 16-75422 Fax: +49 6151 869-127<br>
Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt<br>
<br>
</div></div></blockquote></div><br></div>