@@ -65,6 +65,61 @@ public void genericsCanBeUsed() {
6565 assertEquals ("Badger" , script .getNextMessage ());
6666 }
6767
68+ @ Test
69+ public void fieldsThatCollideWithMethodsGetSuffixed () {
70+ loadScript ("var Collider = Java.use('re.frida.Collider');" +
71+ "var collider = Collider.$new();" +
72+ "send(collider._particle);" );
73+ assertEquals ("1" , script .getNextMessage ());
74+ }
75+
76+ @ Test
77+ public void methodsThatCollideWithFieldsKeepName () {
78+ loadScript ("var Collider = Java.use('re.frida.Collider');" +
79+ "var collider = Collider.$new();" +
80+ "send(collider.particle());" );
81+ assertEquals ("3" , script .getNextMessage ());
82+ }
83+
84+ @ Test
85+ public void fieldsThatCollideWithMethodsGetSuffixed2 () {
86+ loadScript ("var Collider = Java.use('re.frida.Collider');" +
87+ "var collider = Collider.$new();" +
88+ "send(collider._particle2);" );
89+ assertEquals ("2" , script .getNextMessage ());
90+ }
91+
92+ @ Test
93+ public void methodsThatCollideWithFieldsKeepName2 () {
94+ loadScript ("var Collider = Java.use('re.frida.Collider');" +
95+ "var collider = Collider.$new();" +
96+ "send(collider.particle2());" );
97+ assertEquals ("4" , script .getNextMessage ());
98+ }
99+
100+ @ Test
101+ public void collidedMethodsFieldsCanStillBeInstrumented () {
102+ loadScript ("var Collider = Java.use('re.frida.Collider');" +
103+ "Collider._particle.implementation = function () {" +
104+ "return 11;" +
105+ "};" +
106+ "Collider._particle2.implementation = function () {" +
107+ "return 22;" +
108+ "};" +
109+ "Collider.particle.implementation = function () {" +
110+ "return 33;" +
111+ "};" +
112+ "Collider.particle2.implementation = function () {" +
113+ "return 44;" +
114+ "};" );
115+
116+ Collider collider = new Collider ();
117+ assertEquals (11 , Collider .particle );
118+ assertEquals (22 , collider .particle2 );
119+ assertEquals (33 , collider .particle ());
120+ assertEquals (44 , Collider .particle2 ());
121+ }
122+
68123 // @Test
69124 public void interfaceCanBeImplemented () {
70125 loadScript ("var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager');" +
@@ -118,3 +173,16 @@ public int returnZero() {
118173 return 0 ;
119174 }
120175}
176+
177+ class Collider {
178+ static int particle = 1 ;
179+ int particle2 = 2 ;
180+
181+ int particle () {
182+ return 3 ;
183+ }
184+
185+ static int particle2 () {
186+ return 4 ;
187+ }
188+ }
0 commit comments