图文精华

易锦教育»学术中心 学术交流社区 作业中心 Android逆向精英班(第一期) 2021-09-17 精英班学员
分享

2021-09-17 精英班学员

迁羽 发表于 2021-9-17 22:23:41 [显示全部楼层] 回帖奖励 倒序浏览 阅读模式 关闭右栏 12 272

分析附件中的APP程序,绕过反调试,获取正确密码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
选择远比努力更重要!
回复

使用道具 举报

已有(12)人评论

跳转到指定楼层
枯燥的小飞机 发表于 2021-9-18 22:37:00
过反调试,拿到正确的flag
1.既然知道有反调试,首先两种反调试可以直接过,第一改android_server文件名(mv oldname newname),第二改端口,启动后面跟一个-p参数(./as -pXXXXX)
2.前面两部做了可以过简单的反调试,接下来就是要定位反调试的点。首先遇到反调试应该考虑到反调试的执行时机应该是比较早的,那么既然如此,对于java层能入手的地方就是onCreate,attachbaseapplication等方法下,so的话就是init,init_array和Jni_Onload了,java先不考虑,反汇编一看便知。重心放到so,那么我们就需要以调试模式来启动应用程序,以便我们在更早的时机下断。
3.通过几次尝试,代码每次执行到一个固定位置就崩了,那么这个点应该就是我们要早的反调试的地方


4.借助2进制文本编辑器,修改二进制代码,把跳转逻辑nop调,不执行

5.修改完2进制代码,对该apk进行文件替换重新安装等操作



6.重新安装上软件后,进过测试,可以正常运行,那么开始检验我们反调试是否成功过掉了,通过普通调试模式启动,软件正常运行,并且在对应的地方断下

7.开始调试,找出正确的flag




8.正确flag:aiyou,bucuoo

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

听雨安卓逆向 发表于 2021-9-19 13:19:19
本帖最后由 听雨安卓逆向 于 2021-9-19 13:22 编辑

分析自毁程序:先工具走一波jadx ida 分析

发现主要函数和so库
直接附加操作 先直接调试发现很尴尬

所以断定这玩意在加载太快 目标应该在JNI_Onload里面
所以动态调试
==================================
一路F8发现在blx r7这里崩掉了  so直接nop大法干掉


成功过了反调试 --、
下一步就是分析正确flag 了 静态分析走起

发现字符串wojiushidaan 发现输入并不能正确进去
进过分析他应该是一个类似于地址要取他的值也就是[wojiushidanan]=???啥也不说了调试走起

到此分析结束flag=iyou,bucuoo


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

恐龙先生 发表于 2021-9-20 10:55:54
本帖最后由 恐龙先生 于 2021-9-21 21:49 编辑

20210917作业
一开始静态分析还以为flag是:wojiushidaan
一次操作去反调试的时候把Jni_Onload里的循环体干掉了结果wojiushidaan反而变成了正确flag
原来这个循环体是so被加载时把静态分析看到的wojiushidaan给改成其它内容了
最后发现只有一个地方反调试,好家伙


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

睡梦中的仙人 发表于 2021-9-20 14:15:04
本次作业由于提示太明显,直接拖so静态分析一波。发现采用的动态注册方式加载,所以直接分析jni_load,由于反调试方式大多都通过启动单独线程进行死循环反调试检测,所以直接查看jni_load下是否有创建线程的代码,直接屏蔽就能过掉部分反调试检测,直接看代码
直接屏蔽这块代码 修改为00 00 A0 E1
干掉了。然后把so放到手机里去替换掉
然后运行ida,开启服务,转发端口,直接附加即可,附加没有挂掉,说明已经屏蔽成功。
开始调试获得正确密码。随便输入几个字符开始调试
得到结果aiyou,bucuoo就是正确的密码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

八十万禁军教头 发表于 2021-9-22 05:58:23
环境:Android10、IDA7.5
解决10版本HOOK JNI_ONLOAD 失败的。以

IDA_LIBC_PATH=/apex/com.android.runtime/lib/bionic/libc.so     /data/local/tmp/android_server 启动服务

1、adb shell am start -D -n com.yaotong.crackme/.MainActivity
2、adb shell dumpsys activity top | findstr pid
3、adb forward tcp:8777 jdwp:13016
4、jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8777

可以正常HOOK JNI_ONLOAD


基地址+偏移地址


发现在加载线程就挂掉了



显示机器码 用0000 8个字节 Patch掉值 原来的机器码


再在Seacury下断点


得到结果:wojiushidaan



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

NCK 发表于 2021-9-22 14:58:27
先用jadx +静态 ida分析

这里明显是跳到反调试的地方 直接把跳转的做掉


附加成功(在这里 之前是不管有没有反调试都无法附加 最后请教了下教头,才附加成功了)

R3和R1判断 不等于就跳到下面退出 所以R3就是最终的答案

成功拿到flag






<
回复

使用道具 举报

心情落叶 发表于 2021-9-22 22:37:28
2021-09-22 落沙提交

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

小飞 发表于 2021-9-22 23:38:39
本帖最后由 小飞 于 2021-9-22 23:39 编辑

分析附件中的APP程序,绕过反调试,获取正确密码。
1.先拖入jadx查看,主要分析 securityCheck,

2.直接动态调试。发现直接挂掉了

3.尝试在JIN_onLoad下断点查看哪里反调试,
因自身手机没开启调试模式,选中给APP 加上调试模式,
尝试用AndroidKiller加上 android:debuggable="true" 编译成功。

4.成功在JIN_onLoad 下断后,发现在R7这地方程序被退出,
修改HEX 为00 00 00 00,成功运行!



5.接下来分析下
Java_com_yaotong_crackme_MainActivity_securityCheck 这个函数
发现java 层输入的 就事R0 ,然后下面有对比逻辑,查看下对比值 aiyou,bucuoo
成功!







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
<
回复

使用道具 举报

马到成功 发表于 2021-9-23 16:29:13
先对其进行静态分析,并且修复关键函数的伪代码。
但是发现该答案不正确,那么就要动态调试一下看看问题出在哪,但是由于有反调试,那么就要以调试模式启动,过掉反调试点

静态分析JNI_Onload函数有点困难,那么动态分析一下该函数
运行到跳转R7指令就结束了

先试试把该指令给nop掉
然后就能正常调试了
定位到securityCheck的代码处

然后就拿到了密码
Flag为aiyou,bucuoo

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

不知道为什么,我的图片显示不出来,不过我传的有作业的附件  详情 回复 发表于 2021-9-23 16:30
<
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则