安卓逆向学习入门之过反调试(一)

举报
悦来客栈的老板 发表于 2020/12/28 22:55:50 2020/12/28
【摘要】 前面有篇文章讲了 smail代码的简单修改,其实它有3个apk可以用来练手,今天来讲第二个apk,也是比较简单,大佬请飘过。 样本地址: https://github.com/wyhuan/owasp-mstg/blob/master/Crackmes/Android/Level_02/UnCrackable-Level2.apk 依然下载到手机并安装,打开看看...

前面有篇文章讲了 smail代码的简单修改,其实它有3个apk可以用来练手,今天来讲第二个apk,也是比较简单,大佬请飘过。

样本地址:

https://github.com/wyhuan/owasp-mstg/blob/master/Crackmes/Android/Level_02/UnCrackable-Level2.apk

  

依然下载到手机并安装,打开看看:

还是和之前一样还有root 检测,还是照样用 jadx打开apk看看:

可以看到,除了检测 root之外,还会检测 是否正在被调试。如果 像上次一样只修改那个语句肯定不行,被调试检测也得一样修改,要不然在动态调试的时候会直接退出:

这里有两种方案:

一:用frida Hook exit函数,即在执行exit的时候,什么也不做,并不是真正的将进程退出。但是注入的时间得准确,在线程创建之前;否则无法正常Hook

二:将这里的代码在smali文件里面全部删除,这样就不会将程序退出了。

我这里使用的是第二种方法,找到对应的文件和代码,全部删掉:

重新打包并签名安装后,随便输入一个字符串看提示:

搜索Nope定位到 调用的地方,发现调用的是一个 native 层的函数:

定义如下:

翻看 lib文件夹里面的文件,有这些:

选择 armeabi-v7a 文件夹里面的so文件拖入到IDA,并查找 bar 函数,F5查看其C伪代码,导入jni.h头文件,并定义一些结构,效果如下:

逻辑很清晰,先判断输入的字符串长度是否为23,然后再判断是否与 "Thanks for all the fish"相等,也就是输入的字符串是否为 "Thanks for all the fish",在app上输入该字符串,可以看到成功了:

虽然成功了,但这不是今天的重点,该apk的native层其实有检测是否正在被调试:

该子函数的定义如下:

理解这段代码需要一些 进程和线程的知识,目前我也属于萌新的状态,只知道将 ptrace 函数NOP掉就可以过它的检测。下面我们就开干吧。

一,确定手机的CPU架构,一条adb命令即可:

adb shell getprop ro.product.cpu.abi

  

测试手机的结果如下:

二:将这个架构下的so文件拖入IDA(也要选择64位),并设置断点:

三:开始手机上的服务,并进行端口转发:

四:设置IDA调试:

五:调试模式运行该app,cmd输入如下命令:

adb shell am start -D -n owasp.mstg.uncrackable2/sg.vantagepoint.uncrackable2.MainActivity

  

该命令运行后手机上的界面显示:

六:进程PID查看,用ps命令在cmd窗口看的比较费劲,直接保存到文件,在文件里面查找吧:

adb shell ps -A >D:\123.txt

  

转发:

adb forward tcp:8700 jdwp:13573 

  

运行这条命令后,转到IDA,进行调试:

点击yes,以后这种弹框都点击yes即可。

jdb附加,在cmd下输入如下命令并回车:

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

  

附加后,在IDA界面一直按F9,使程序运行起来,直到停到断点的位置:

弹出框一律选择 yes 或 same。不就就会来到这里:

这就停在了设置断点的位置。按下空格将窗口放大,在调用子函数时,按下F7,进入子函数:

将这两处的指令直接NOP替换:

然后一直按下F9,直到看到手机app 正常运行且光标闪烁,随便输入一个 字符串,并按下 VERIFY按钮,IDA弹出如下框:

点击yes,来到bar函数的断点处:

这样,一个动态调试时过反调试简单例子就完成了。

调试到这里,指令想怎么改就怎么改吧,你高兴就好。

文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/109508042

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。