闲来无事,去找一些CrackMe练练手,偶然发现一个网站有三个CrackMe,但都比较简单,只用到了Jadx-gui和Frida,现在把这三道题解法贴出来。
原站地址:
CrackMe0x01
这道题的介绍是: The very basic crackme challenge. Gives you chance to get familiar with all Android RE tools.
翻译过来就是这个题很简单,让你练练手熟悉一下。
我们先安装App看看(文末上传三个APP)

可以看到只有一个密码的提交键
于是我们打开Jadx-gui来观赏一下。

打开Jdax-gui后先找到按键的onClick函数,然后便看到了明晃晃的大字“Congratulations!”。
成功的入口就是flag不为空,所以我们从getFlag继续点进去

点进去之后发现getFlag里面嵌套了一个equals判断,为true的话就成功了,我们进去看一下有没有密码。

点开时候发现果然是练手题,明文密码就直接出现了,我们直接输入密码就可以进入程序了。

CrackMe0x02
这道题的介绍是: What if JD-GUI doesn’t show you the password?
翻译过来就是,这次Jadx-gui可就不显示密码了。
我们先安装App看看(文末上传三个APP)

赫赫,如出一辙,那就继续用Jadx-gui看看


可以看到前面的函数都是一样的操作,但题目说没有明文,那我们继续看getData里面是什么。

我们可以看到,这次的密码实在资源文件中,但资源文件中的secret是不可见明文的,那这时我们就要用到Frida来hook一下看看了。
新版Jadx-gui可以直接右键复制Frida代码,以下就是Frida代码了。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function main() {
Java.perform( function(){
let Data
=
Java.use(
"com.entebra.crackme0x02.Data"
);
Data[
"getData"
].implementation
=
function (context) {
console.log(
'getData is called'
+
', '
+
'context: '
+
context);
let ret
=
this.getData(context);
console.log(
'getData ret value is '
+
ret);
return
ret;
};
})
}
setImmediate(main);
|
然后我我们启动hook,再随便输入一个字符串,触发一下getData函数

这下我们就看到密码了,输入密码后就成功进去了。

CrackMe0x03
这道题的介绍是: Some hashes, cats and strings generation.
翻译过来就是,这次Jadx-gui不仅不显示密码了,还用到了哈希。
我们先安装App看看(文末上传三个APP)

赫赫,我就猜到还是一样的,老样子Jadx-gui

开局还是一样的操作,我们再进去看看

这次的getFlag中增加了一个isPassWorkOk函数,当这个函数返回true后,就会进入程序显示flag。

我们可以看到在isPassWorkOk里面是直接通过hash来进行比较了,被比较的hash值是:
ac43bb53262e4edd82c0e82a93c84755
我去了各个md5网站都没有找到这个值的明文,但我们可以看出来,这次的密码长度为6,所以如果暴力遍历的话有成百上千亿种方案,我先是把数字和小写字母的组合遍历一遍后没有结果,于是就想着只要拿到flag就可以了。
接着就开始写Frida代码,只要把isPassWork返回true就可以得到flag进入程序了,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function main() {
Java.perform( function(){
let Data
=
Java.use(
"net.persianov.crackme0x03.Data"
);
Data[
"isPasswordOk"
].implementation
=
function (
str
) {
console.log(
'isPasswordOk is called'
+
', '
+
'str: '
+
str
);
let ret
=
true;
console.log(
'isPasswordOk ret value is '
+
ret);
return
ret;
};
})
}
setImmediate(main);
|
hook之后随便输入一个6位数的字符串

然后我们就得到flag进去了

三道基础题这就解完了,下次再找找有没有稍微提升一些的再分享给大家。
更多【 Android逆向CrackMe基础三连题】相关视频教程:www.yxfzedu.com