-
-
[原创]2015年AliCrackMe中第一道题的分析
-
发表于: 2019-8-13 01:21 3690
-
的而且确,对于这个题目的逆向网络上已经有很多案例,逆这个CrackMe难免有照猫画虎的嫌疑。不过新手总要找点什么来验证自己的技术的。
首先拿到这个apk,就上模拟器跑跑看吧。
可以判断是一个验证码类型的CrackMe。
细节的数量还不足以让我们得到验证码,还得获得更多的信息。
解压缩apk文件, 得到下图所示的文件。
发现有一个asset文件夹。以一个只有获取验证码的模块来看,需要额外的资源吗?
当然重点还是dex文件了。打开JEB3.0,把dex文件拖拽进去,看来解析成功了。
首先看看入口函数里apk安排了什么工作:
这里主要的工作是处理按钮的点击事件回调函数,然后在这个函数中处理验证码了。v4和v5根据函数名可以猜测是从图片中得到的数据。点进getTableFromPic:
流程只有3步:打开资源、从89473位置拷贝一段长度为0x300的数据、编码成utf-8,就返回了。返回值是这段utf-8的数据。
另一个函数getPwdFromPic,功能大同小异,也是打开资源从某个位置读一段数据出来编码成utf-8再返回数据。只是位置和数据的长度不同而已。
返回的Table和Pic,已经被打印出来。可以直接看到。打开虚拟机和cmd,然后在黑框中输入adb logcat | findstr lil。现在还没有数据。运行目标APK,点击一下那个显示着“登录”的按钮,黑框就有内容显示了:
出现这样的乱码并不是命令行的错,只是控制台默认的编码不是utf-8而已。是的,刚刚的两个函数getTableFromPic和getPwdFromPic在返回前已经把返回值编码成了utf-8了。这样的情况下要先CTRL+C停止重定向,然后cls,输入,再次输入adb logcat | findstr lil,重启目标app,点击“登录”按钮,黑框中就有如下内容:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)