<div dir="ltr">Thanks, Sam. I saw "ldc" instruction in byte code. (Description: <span style="color:rgb(0,0,0);font-family:sans-serif;font-size:14px;line-height:22.3999996185303px;background-color:rgb(249,249,249)">push a constant </span><i style="color:rgb(0,0,0);font-family:sans-serif;font-size:14px;line-height:22.3999996185303px;background-color:rgb(249,249,249)">#index</i><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:14px;line-height:22.3999996185303px;background-color:rgb(249,249,249)"> from a constant pool (String, int or float) onto the stack)</span><div><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:14px;line-height:22.3999996185303px;background-color:rgb(249,249,249)">So ... </span><font color="#000000" face="sans-serif"><span style="font-size:14px;line-height:22.3999996185303px">I need to modify constant pool, isn't it? Could I do it with soot? How?</span></font></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-02-17 20:16 GMT+03:00 Sam Blackshear <span dir="ltr"><<a href="mailto:samuel.blackshear@colorado.edu" target="_blank">samuel.blackshear@colorado.edu</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi Roman, </div> I think the reason that your transformation isn't working is that javac is optimizing away your fields. Inlining of static final field reads for fields with primitive or String types is one of the only compile-time optimizations the Java compiler knows how to do. You may be able to get around this in some other way, but I don't think you'll see those field reads in the bytecode.<span class="HOEnZb"><font color="#888888"><div><br></div><div>- Sam</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 17, 2015 at 10:10 AM, Roman Petriev <span dir="ltr"><<a href="mailto:vvpiroman@gmail.com" target="_blank">vvpiroman@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><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><span><div> </div><div> public static void main(String[] args) {</div><div><br></div></span><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><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><div><br>
> On 16.02.2015, at 23:52, Roman Petriev <<a href="mailto:vvpiroman@gmail.com" target="_blank">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" target="_blank">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" target="_blank">marc-andre.laverdiere-papineau@polymtl.ca</a><br>
> > <mailto:<a href="mailto:marc-andre.laverdiere-papineau@polymtl.ca" target="_blank">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" target="_blank">eric.bodden@sit.fraunhofer.de</a> <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a>><br>
> > > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a><br>
> > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">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" target="_blank">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">vvpiroman@gmail.com</a>><br>
> > > <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">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" target="_blank">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">vvpiroman@gmail.com</a>><br>
> > > <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">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" target="_blank">eric.bodden@sit.fraunhofer.de</a><br>
> > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a>><br>
> > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a><br>
> > <mailto:<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">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" target="_blank">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">vvpiroman@gmail.com</a>><br>
> > > <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">vvpiroman@gmail.com</a> <mailto:<a href="mailto:vvpiroman@gmail.com" target="_blank">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" target="_blank">Soot-list@CS.McGill.CA</a> <mailto:<a href="mailto:Soot-list@CS.McGill.CA" target="_blank">Soot-list@CS.McGill.CA</a>><br>
> > <mailto:<a href="mailto:Soot-list@CS.McGill.CA" target="_blank">Soot-list@CS.McGill.CA</a> <mailto:<a href="mailto:Soot-list@CS.McGill.CA" target="_blank">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: <a href="tel:%2B49%206151%2016-75422" value="+4961511675422" target="_blank">+49 6151 16-75422</a> Fax: <a href="tel:%2B49%206151%20869-127" value="+496151869127" target="_blank">+49 6151 869-127</a><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: <a href="tel:%2B49%206151%2016-75422" value="+4961511675422" target="_blank">+49 6151 16-75422</a> Fax: <a href="tel:%2B49%206151%20869-127" value="+496151869127" target="_blank">+49 6151 869-127</a><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" target="_blank">Soot-list@CS.McGill.CA</a> <mailto:<a href="mailto:Soot-list@CS.McGill.CA" target="_blank">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" target="_blank">Soot-list@CS.McGill.CA</a> <mailto:<a href="mailto:Soot-list@CS.McGill.CA" target="_blank">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" target="_blank">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" target="_blank">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" target="_blank">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: <a href="tel:%2B49%206151%2016-75422" value="+4961511675422" target="_blank">+49 6151 16-75422</a> Fax: <a href="tel:%2B49%206151%20869-127" value="+496151869127" target="_blank">+49 6151 869-127</a><br>
Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt<br>
<br>
</div></div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
Soot-list mailing list<br>
<a href="mailto:Soot-list@CS.McGill.CA" target="_blank">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></blockquote></div><br></div>
</div></div></blockquote></div><br></div>