<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" id="owaParaStyle"></style>
</head>
<body fpstyle="1" ocsi="0">
Thanks Eric,<br>
<br>
in fact I added -validate to the command and I've got a "<font face="Courier New">no defs for value: proxyType!</font>" error
<div><br>
</div>
<div>To get rid of it, I tried to assign to proxyType a value but I think something is wrong, because I don't think it's the correct value to set a enum value to a Local.</div>
<div><br>
</div>
<div>My code:</div>
<div>
<p class="p1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span>SootClass
clsProxyType = Scene.v().getSootClass(<span class="s1">"java.net.Proxy$Type"</span>);</p>
<p class="p2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></p>
<p class="p1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span>Local
proxyType = Jimple.v().newLocal(<span class="s1">"proxyType"</span>, RefType.v(clsProxyType));</p>
<p class="p1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span>b.getLocals().add(proxyType);</p>
<p class="p1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3">probe.add(Jimple.v().newAssignStmt(proxyType,
Jimple.v().</span></p>
<p class="p1"><span class="s3"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span>newNewExpr(clsProxyType.getType())))</span>;</p>
<p class="p1"><br>
</p>
<p class="p1"><br>
</p>
<p class="p1">What a correct assignment is represented in Jimple:</p>
<p class="p1"></p>
<p class="p1">$r6 = <java.net.Proxy$Type: java.net.Proxy$Type HTTP>;</p>
<p class="p1"><br>
</p>
<p class="p1">Basically I just need to pass enum value Proxy.Type.HTTP as a parameter of the Proxy constructor method.</p>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Daniele</div>
<div><br>
<br>
________________________________________<br>
From: Bodden, Eric [eric.bodden@sit.fraunhofer.de]<br>
Sent: Monday, February 02, 2015 11:09 PM<br>
To: Daniele Altomare<br>
Cc: Steven Arzt; soot-list@CS.McGill.CA<br>
Subject: Re: [Soot-list] Generating code for enumaration<br>
<br>
Hi Daniele.<br>
<br>
It looks to me like the Jimple code you generate is ill-structured. Try to enable the -validate command line switch in Soot. That might help you pinpoint the problem.<br>
<br>
Cheers,<br>
Eric<br>
<br>
> On 02.02.2015, at 15:37, Daniele Altomare <daniele.altomare@sysmosoft.com> wrote:<br>
><br>
> Hi Steven,<br>
><br>
> thanks for getting back to me. If I run the transformed executable (APK) I get a java.lang.VerifyError exception and this is the root cause:<br>
><br>
> 02-02 15:49:39.170: W/dalvikvm(19074): VFY: register1 v7 holds uninitialized ref<br>
> 02-02 15:49:39.170: W/dalvikvm(19074): VFY: bad arg 1 (into Ljava/net/Proxy$Type;)<br>
> 02-02 15:49:39.170: W/dalvikvm(19074): VFY: rejecting call to Ljava/net/Proxy;.<init> (Ljava/net/Proxy$Type;Ljava/net/SocketAddress;)V<br>
> 02-02 15:49:39.170: W/dalvikvm(19074): VFY: rejecting opcode 0x70 at 0x0015<br>
> 02-02 15:49:39.170: W/dalvikvm(19074): VFY: rejected<br>
><br>
> Please notice that I'm trying to init a Proxy instance:<br>
> specialinvoke $r5.<java.net.Proxy: void <init>(java.net.Proxy$Type,java.net.SocketAddress)>($r6, $r7);<br>
><br>
><br>
> If I run the driver class on this transformed APK (so I can print the body to check my transformation), I get this error:<br>
> local type not allowed in final code: bottom_type local: $r6<br>
><br>
><br>
> In fact, if I check the body I see "bottom_type $r6;" instead of "java.net.Proxy$Type $r6;" as expected.<br>
><br>
><br>
> Thanks again,<br>
> Daniele<br>
><br>
> From: Steven Arzt [Steven.Arzt@cased.de]<br>
> Sent: Monday, February 02, 2015 5:16 PM<br>
> To: Daniele Altomare; soot-list@CS.McGill.CA<br>
> Subject: AW: [Soot-list] Generating code for enumaration<br>
><br>
> Hi Daniele,<br>
><br>
> To answer this question, we would need more information. What do you mean by “does not work”? The code you wrote should give you a new local of the correct type – but it’s hard to tell what else may be wrong if one does not know how you use this local and
where the problem shows up.<br>
><br>
> Best regards,<br>
> Steven<br>
><br>
><br>
> M.Sc. M.Sc. Steven Arzt<br>
> Secure Software Engineering Group (SSE)<br>
> European Center for Security and Privacy by Design (EC SPRIDE)<br>
> Rheinstraße 75<br>
> D-64293 Darmstadt<br>
> Phone: +49 61 51 869-336<br>
> Fax: +49 61 51 16-72118<br>
> eMail: steven.arzt@ec-spride.de<br>
> Web: http://sse.ec-spride.de<br>
><br>
><br>
><br>
> Von: soot-list-bounces@CS.McGill.CA [mailto:soot-list-bounces@CS.McGill.CA] Im Auftrag von Daniele Altomare<br>
> Gesendet: Montag, 2. Februar 2015 17:14<br>
> An: soot-list@CS.McGill.CA<br>
> Betreff: [Soot-list] Generating code for enumaration<br>
><br>
> Hi all,<br>
><br>
> I'm getting stuck at generating code for an enum in a BodyTransformer.<br>
><br>
> I have to pass the the proxy type to a method and that's defined by an enum.<br>
> If I run the driver class for a java program where I define the proxy (so I can see the Jimple code) I get this for the method body:<br>
><br>
> $r6 = <java.net.Proxy$Type: java.net.Proxy$Type HTTP>;<br>
><br>
><br>
><br>
> I've tried in this way but it doesn't work:<br>
><br>
> SootClass clsProxyType = Scene.v().getSootClass("java.net.Proxy$Type");<br>
><br>
> Local proxyType = Jimple.v().newLocal("proxyType", RefType.v(clsProxyType));<br>
><br>
> b.getLocals().add(proxyType);<br>
><br>
><br>
><br>
> Can someone help me with this?<br>
><br>
><br>
><br>
> Thanks!<br>
><br>
> Daniele<br>
><br>
><br>
> _______________________________________________<br>
> Soot-list mailing list<br>
> Soot-list@CS.McGill.CA<br>
> https://mailman.CS.McGill.CA/mailman/listinfo/soot-list<br>
<br>
--<br>
Prof. Eric Bodden, Ph.D., http://sse.ec-spride.de/ http://bodden.de/<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>
</body>
</html>