当前位置: 首页 > article >正文

自毁程序密码—阿里聚安全(IDA动态调试)

App信息

包名:com.yaotong.crackme
在这里插入图片描述

Java层分析

MainActivity

在这里插入图片描述
很容易就能看出来是在securityCheck函数里进行安全校验。securityCheck是一个native函数,到so中进行分析。

SO层分析

定位函数位置

在导出函数里搜索
在这里插入图片描述

securityCheck

数据类型修复和重命名后的securityCheck

int __fastcall Java_com_yaotong_crackme_MainActivity_securityCheck(JNIEnv *a1, jobject a2, char *str)
{
  const char *inputStr; // r0
  char *wojiushidaan; // r2
  int tempResult; // r3
  int v8; // r1

  if ( !byte_6359 )
  {
    sub_2494(byte_6304, 8, &unk_446B, &unk_4468, 2, 7);
    byte_6359 = 1;
  }
  if ( !byte_635A )
  {
    sub_24F4(byte_636C, 25, &unk_4530, &unk_4474, 3, 117);
    byte_635A = 1;
  }
  _android_log_print(4, byte_6304, byte_636C);
  inputStr = (*a1)->GetStringUTFChars(a1, str, 0);
  wojiushidaan = off_628C;
  while ( 1 )
  {
    tempResult = *wojiushidaan;
    if ( tempResult != *inputStr )
      break;
    ++wojiushidaan;
    ++inputStr;
    v8 = 1;
    if ( !tempResult )
      return v8;
  }
  return 0;
}

off_628C

进入off_628C偏移查看,它的内容是"wojiushidaan"
在这里插入图片描述
结合securityCheck函数分析,我觉得这就是正确答案了。

可是输入之后,还是校验失败。
在这里插入图片描述
无奈只能动态调试

动态调试

IDA动态调试环境配置这里不再介绍。

附加进程

这里我们选择附加到进程
在这里插入图片描述
附加进程之后,我们运行一下,会发现,程序崩了,IDA也崩了,说明这个程序是有反调试的。

反调试绕过

猜测反调试是通过线程进行循环检测的。

打开线程窗口
在这里插入图片描述
发现一个线程yaotong.crackme,有点可疑,右键这个线程,将状态改为suspend,暂停这个线程。
在这里插入图片描述
然后运行,程序没有挂掉,可以进行调试。

断点调试

打开Modules窗口,找到libcrackme.so,双击进去,找到securityCheck函数,双击该函数跳转到函数的位置。
在这里插入图片描述
在这个函数起始的位置下一个断点,将光标移动到断点位置,按下快捷键F,然后在输入框输入任意数据,点击输入密码,程序就会运行到断点位置。

F5查看反汇编,找到原来的变量偏移地址处,发现数据变了,变成了aiyou,bucuoo
在这里插入图片描述

验证

aiyou,bucuoo放进输入框,点击输入密码,跳转到成功界面。
在这里插入图片描述


http://www.kler.cn/a/446701.html

相关文章:

  • 回归预测 | MATLAB实现CNN-BiGRU-Attention卷积神经网络结合双向门控循环单元融合注意力机制多输入单输出回归预测
  • 计算机工作流程
  • 力扣-图论-18【算法学习day.68】
  • 28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强
  • ECharts 饼图:数据可视化的重要工具
  • QT笔记- QClipboard剪切板对QByteArray数据的复制与粘贴
  • 宠物管理系统(1):Bean设计
  • EMMC , UFS, SSD介绍
  • 如何解决vscode powershell乱码
  • 解决PCL库中pcl::VoxelGrid降采样Bug
  • 鸿蒙项目云捐助第十三讲大模型进行智能问答应用进阶
  • 异步BUCK二极管损耗计算
  • 时空信息平台-API安全措施:上篇(通讯协议的安全措施)
  • 工泰“安全有序·消防护盾”统建统服有序充电新产品发布会成功举办
  • Dubbo 3.x源码(27)—Dubbo服务引用源码(10)subscribeURLs订阅应用级服务url
  • 如何在谷歌浏览器中设置家庭安全
  • harmonyOS组件拥有的状态汇总
  • SpringBoot 3.4.x踩坑记录及解决方案(持续更新)
  • K8s ConfigMap的基础功能介绍
  • 第十五届蓝桥杯Scratch01月stema选拔赛—排序
  • linux-----数据库
  • 机器学习架起了组学科学和植物育种之间的桥梁。
  • 若依启动项目时配置为 HTTPS 协议
  • Redis中的Hot key排查和解决思路
  • B树的性质和插入过程
  • 入侵他人电脑,实现远程控制(待补充)