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

自毁程序密码—阿里聚安全(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; // r0char *wojiushidaan; // r2int tempResult; // r3int v8; // r1if ( !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.lryc.cn/news/507376.html

相关文章:

  • 【华为OD-E卷-寻找关键钥匙 100分(python、java、c++、js、c)】
  • vscode 使用说明
  • 【Linux系统编程】:信号(2)——信号的产生
  • Android Studio AI助手---Gemini
  • 【day09】面向对象——静态成员和可变参数
  • Android学习(七)-Kotlin编程语言-Lambda 编程
  • 彻底认识和理解探索分布式网络编程中的SSL安全通信机制
  • 【libuv】Fargo信令2:【深入】client为什么收不到服务端响应的ack消息
  • Vue3自定义事件
  • BeautifulSoup 与 XPath 用法详解与对比
  • Emacs 折腾日记(五)——elisp 数字类型
  • 重拾设计模式--外观模式
  • 源码编译llama.cpp for android
  • StarRocks 排查单副本表
  • Windows11 家庭版安装配置 Docker
  • 线程知识总结(二)
  • 解决vscode ssh远程连接服务器一直卡在下载 vscode server问题
  • 【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)
  • Definition of Done
  • 【漏洞复现】CVE-2023-37461 Arbitrary File Writing
  • 简单工厂模式和策略模式的异同
  • HuggingFace datasets - 下载数据
  • 梯度(Gradient)和 雅各比矩阵(Jacobian Matrix)的区别和联系:中英双语
  • Vscode搭建C语言多文件开发环境
  • 自定义 C++ 编译器的调用与管理
  • 时间管理系统|Java|SSM|JSP|
  • 用SparkSQL和PySpark完成按时间字段顺序将字符串字段中的值组合在一起分组显示
  • Sentinel 学习笔记3-责任链与工作流程
  • Latex 转换为 Word(使用GrindEQ )(英文转中文,毕业论文)
  • 使用Chat-LangChain模块创建一个与用户交流的机器人