看雪3W班12月ollvm题,重点考察去混淆。
1
解题思路
得益于Unicorn的强大的指令trace能力,可以很容易实现对cpu执行的每一条汇编指令的跟踪,进而对ollvm保护的函数进行剪枝,去掉虚假块,大大提高逆向分析效率。
通过对题目的考察,学习到如下知识点:
2
详细步骤
1、apk拖入jadx,获取基础信息。
com.kanxue.crackme
com.kanxue.crackme.MainActivity
public boolean check(String content) {
if (jnicheck(content)) {
return true;
}
return false;
}
System.loadLibrary("native-lib");
public native boolean jnicheck(String str);
public static native boolean crypt2(String str);
2、利用frida去hook关键函数,同时输入字符,点按钮验证,观察日志后发现:jnicheck是我们的输入、crypt2是输入字符串+字符串666。
3、IDA分析so,直接跟踪到关键函数sub_22390、sub_19a60;发现都是ollvm混淆的,没法看。
4、用unidbg跑关键的crypt2函数,并拿到trace日志,其中重要的是地址。
5、根据题目提示信息——利用trace日志进行剪枝,查了下IDAPython API,编写剪枝代码,对2个函数剪枝。发现关键函数sub_19a60就是base64、sub_22390就是很简单的调用。
看雪ID:奔跑的阿狸
https://bbs.pediy.com/user-home-717171.htm
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!
本文始发于微信公众号(看雪学院):ollvm算法还原案例分享
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论