前面有篇文章讲了 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函数的断点处:

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

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

native层 安卓_安卓逆向学习入门之过反调试(一)相关推荐

  1. 转g代码教程_图深度学习入门教程(九)——图滤波神经网络模型

    本教程是一个系列免费教程,争取每月更新2到4篇.(由于精力有限,近期停止了一段时间,在此向大家道个歉). 主要是基于图深度学习的入门内容.讲述最基本的基础知识,其中包括深度学习.数学.图神经网络等相关 ...

  2. 安卓逆向_20 --- 模拟器检测、反调试检测、ELF动态调试、__libc_init 下断

    From( 模拟器检测实战分析 ):https://www.bilibili.com/video/BV1UE411A7rW?p=65 怎样过 app 的模拟器检测:https://bbs.pediy. ...

  3. Android逆向之旅---应用的反调试方案解析(附加修改IDA调试端口和修改内核信息)

    一.前言 在前一篇文章中详细介绍了 Android现阶段可以采用的几种反调试方案策略,我们在破解逆向应用的时候,一般现在第一步都回去解决反调试,不然后续步骤无法进行,当然如果你是静态分析的话获取就没必 ...

  4. C++游戏辅助开发实战x64游戏逆向汇编封包游戏安全攻防反调试

    学习x64游戏逆向汇编封包游戏安全攻防外挂和反外挂反调试需要掌握的知识体系还是比较复杂的,逆向的知识体系确实是太多了 涉及到 汇编 C语言 c++ win32 hook call 封包 内存 lua  ...

  5. native层 安卓_安卓逆向——拼xx协议java层分析

    制丨阿星 整理丨阿星 老铁们大家好,今天小编给大家带来很实用的技巧叫拼xx协议java层分析,有啥不足的地方望大家指点指点! 首先抓包  反编译 这个时间段我们方法剖析一下 找到onclick 看他的 ...

  6. eth geth 安卓_零基础学习以太坊开发--安装和使用以太坊客户端geth

    一.预备知识 想从事区块链开发,了解以太坊开发的程序员,在刚开始接触以太坊的时候,发现有很多的新名词: EVM solidity go-ethereum(geth) pyethereum Testrp ...

  7. 手电筒安卓_安卓实用小工具!智能工具箱特别版本安卓软件

    软件界面 序号:0037 名称:安卓智能工具箱 分类:Android--实用工具--智能工具 类型:apk 大小:7.58MB 语言:简体中文 版本:V18.1 简介:智能工具箱是安卓移动端的口袋工具 ...

  8. lightroom安卓_安卓可以用的一款PS

    分享+在看 是对小编最大的支持 联系我们 微信:vae1314lmb     想加微信交流群请添加作者微信备注拉群 有了这款修图软件,不管你是玩自拍还是制作证件照,都能快速美化照片实现图片人像合成,轻 ...

  9. 动态壁纸安卓_安卓 高清 动态 壁纸

    Hi,各位大佬好!我是此木: 昨天刚过完"2020520",今天女神要我给她换个好看的.高清的.动态的.安卓的手机壁纸,我勒个去,要求还真不高,于是乎此木埋头半小时,终于找到一款符 ...

最新文章

  1. makefile ifneq多个判断条件_一文入门Makefile
  2. 使用标准模板find函数来对结构体容器进行查找
  3. pandas替换列值+1
  4. java中实现对list的模糊查询
  5. 【Flask项目2】模型类的映射方式新版本和旧版本(4)
  6. 部落卫队pascal解题程序
  7. 如何使用单例EJB,Ehcache和MBean构建和清除参考数据缓存
  8. c/c++ 实参、形参、值传递、地址传递的区别与关系 ---- 授人以鱼不如授人以渔
  9. Android 微信分享后留在微信,没有回调的问题解决方案
  10. 仿二手商城模板html,仿转转商城APP页面模板
  11. linux输入法状态栏消失,隐藏 fcitx 输入法的状态栏
  12. EML-NET: An Expandable Multi-Layer NETwork for Saliency Prediction【论文笔记】
  13. (自我归纳)费曼学习法
  14. 基于深度学习目标检测的人工智能玩游戏
  15. oracle11监视器,Oracle 11g 表空间监控(一) datafile autoextend
  16. 三星性能测试软件,三星T7 性能测试
  17. vs 怎么调试html5,关于html5:使用-VSCode-如何进行远程开发调试
  18. C# 电脑麦克风录音
  19. OSChina 程序员节乱弹 ——看程序员如何优雅地生活
  20. Android快速SDK(24)第三方分享UmengShare【肌肉记忆,分钟接入】

热门文章

  1. 总结几个等价无穷小相关的关系运算
  2. latex algorithm 引用格式错误
  3. .NET dnSpy 程序集编辑器,反编译器和调试器
  4. 根据XPATH去查看修改xml文件节点的内容
  5. VMware View 要求操作句柄的状态错误
  6. Java:多线程,线程池,用Executors静态工厂生成常用线程池
  7. Delphi 使用 Visual Studio Shell , 开源为期不远
  8. 卷积神经网络的参数量和计算量
  9. IBM推出Watson广告服务:认知计算将重塑营销市场?
  10. 简单几行代码申请权限