Slide for speaking at Droidcon Vietnam 2017
Introduction:
Million of android developers around the world are making great apps. But very few really take care about their compiled code really looks like. How do reverse engineers view their app under different perspective.
This speaking will explain in detail about android reverse engineering from the ground up. Attendee will learn about reading byte code, modify and compile apk file, hooking framework and all additional tools for reverse engineering life.
19. Android bytecode datatype
V Void
Z Boolean
B byte
S short
C char
I int
J long (64 bits)
F Kloat
D double (64 bits)
Lpackage1/package2/className;
package com.hqt.model;
class Person {
}
20. Android bytecode datatype
V Void
Z Boolean
B byte
S short
C char
I int
J long (64 bits)
F Kloat
D double (64 bits)
Lpackage1/package2/className;
package com.hqt.model;
class Person {
}
Lcom/hqt/model/Person;
21. Android bytecode datatype
V Void
Z Boolean
B byte
S short
C char
I int
J long (64 bits)
F Kloat
D double (64 bits)
Lpackage1/package2/className;
package com.hqt.model;
class Person {
}
Lcom/hqt/model/Person;
22. Android bytecode datatype
V Void
Z Boolean
B byte
S short
C char
I int
J long (64 bits)
F Kloat
D double (64 bits)
Lpackage1/package2/ className;
package com.hqt.model;
class Person {
}
Lcom/hqt/model/ Person;
47. calcButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int firstNumber = Integer.parseInt(firstNumberText.getText().toString());
int secondNumber = Integer.parseInt(secondNumberText.getText().toString());
ICalc calc = new CalcImpl();
int result = calc.sum(firstNumber, secondNumber);
resultText.setText(result + "");
}
});
48. calcButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int firstNumber = Integer.parseInt(firstNumberText.getText().toString());
int secondNumber = Integer.parseInt(secondNumberText.getText().toString());
ICalc calc = new CalcImpl();
int result = calc.sum(firstNumber, secondNumber);
resultText.setText(result + "");
}
});
49. calcButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int firstNumber = Integer.parseInt(firstNumberText.getText().toString());
int secondNumber = Integer.parseInt(secondNumberText.getText().toString());
ICalc calc = new CalcImpl();
int result = calc.sum(firstNumber, secondNumber);
resultText.setText(result + "");
}
});
public interface ICalc {
int sum(int first, int second);
}
50. calcButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int firstNumber = Integer.parseInt(firstNumberText.getText().toString());
int secondNumber = Integer.parseInt(secondNumberText.getText().toString());
ICalc calc = new CalcImpl();
int result = calc.sum(firstNumber, secondNumber);
resultText.setText(result + "");
}
});
public interface ICalc {
int sum(int first, int second);
}
public class CalcImpl implements ICalc {
@Override
public int sum(int first, int second) {
return first + second;
}
}