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