最近事情比较多,很(其)久(实)没(是)更(自)新(已)了(懒) shoudongdoge!
正好稍微学了点安卓反编译的知识,自己动手操作下。
目录
工具
夜神模拟器
AndroidKiller ⭐⭐⭐
jeb-1.5反编译工具 ⭐⭐⭐⭐⭐
RemerOther
下载拖入到夜神模拟器
其实点击这跳出了一个MD5 直接解密就能获取到一部分flag了
AndroidKiller 打开
首先查看xml配置文件 通过查看 activity 配置文件即可发现首页面代码
com.droider.crackme0201.MainActivity
点击圈起来的jar按钮 即可将 smali语言转化为我们常见的java语言。
和这个MD5文件有关 在res文件夹找到
MD5 解密为:YOU_KNOW_
这个是不对的,实际上还需要加上一个ANDROID(需要点脑洞,不过我都是看write up的哈)
YOU_KNOW_ANDROID
app1
同样操作 ,不过这次用的是jeb 功能其实更强
模拟器情况
反编译 继续查看xml文件 得到首页面(activity)类
查看
<activity android:name="com.example.yaphetshan.tencentgreat.MainActivity">
ps 在jeb 按teb键查看源码
关键代码
public void onClick(View v) {
try {
String v1 = MainActivity.this.text.getText().toString();
PackageInfo v2 = MainActivity.this.getPackageManager().getPackageInfo("com.example.yaphetshan.tencentgreat",
16384);
String v3 = v2.versionName;
int v4 = v2.versionCode;
int v0 = 0;
while(v0 < v1.length()) {
if(v0 >= v3.length()) {
break;
}
if(v1.charAt(v0) != (v3.charAt(v0) ^ v4)) {
Toast.makeText(MainActivity.this, "再接再厉,加油~", 1).show();
return;
}
else {
++v0;
continue;
}
}
if(v1.length() != v3.length()) {
goto label_39;
}
Toast.makeText(MainActivity.this, "恭喜开启闯关之门!", 1).show();
return;
}
catch(PackageManager$NameNotFoundException v5) {
}
我自己还是比较菜,还是花了一点时间才看懂了代码,简单点说:
- PackageInfo 是为了获取 一个Andriod的版本信息 赋值给v2
- 然后 v3,v4 分别为这个版本信息的2个参数 versionName versionCode
- 之后让 v3 和v4 两者异或 与我们输入的值(v1)进行比较。
在config文件夹中查看到了versionName versionCode
大佬的脚本,(我自己练了一下,还是没大佬写得好 ovo)
ss='X<cP[?PHNB<P?aj'
flag=''
for i in ss:
flag+=chr(ord(i)^15)
print(flag)
W3l_T0_GAM3_0ne
总结,因为自己菜,所以学到的东西才多。