攻防世界-Ph0en1x-100

news2025/1/12 3:53:51

第一次独立使用frida解安卓题,没分析代码

Steps

  • 使用jadx打开apk分析主要代码

    • 最主要的就是这个if判断了,安装apk后,有一个输入框和一个check按钮,会根据输入的结果Toast:Success or Failed。
    • getSecret(getFlag()).equals(getSecret(encrypt(sInput))),判断getSecret(getFlag())getSecret(encrypt(sInput))的结果是否相同,其中sInput是输入。

    • getFlag()没有接收任何字符串,所以想到没必要分析代码写了什么,只需要看这个getSecret方法的输入和返回是多少就可以,这里想到了frida。

    • 分析一下getSecret方法

      • **byte**[] hash = MessageDigest.getInstance(encrypt("KE3TLNE6M43EK4GM34LKMLETG").substring(5, 8)).digest(string.getBytes("UTF-8"));
      • 这一句对输入进行加密,加密方法还要通过encrypt("KE3TLNE6M43EK4GM34LKMLETG").substring(5, 8)获取,写死的就证明加密也只是一个。这里开始想的是用frida看简单的输入的输出,判断是什么编码。
    • frida函数

      • jadx中右键getSecret函数-复制为frida代码,
      • 再加个Java.perform(function()运行函数
      Java.perform(function() {
          let MainActivity = Java.use("com.ph0en1x.android_crackme.MainActivity");
          MainActivity["getSecret"].implementation = function (string) {
          console.log('getSecret is called' + ', ' + 'string: ' + string);
          let ret = this.getSecret(string);
          console.log('getSecret ret value is ' + ret);
          return ret;
      };
      });
      
    • 打开frida-server

    • frida-ps -U先查看当前运行的进程,然后找到相应的进行,进行frida
    • 具体可参考正己大佬的博客,《安卓逆向这档事》十三、是时候学习一下Frida一把梭了(上) - 『移动安全区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
    • 在手机上点击check按钮,查看log信息。
    • 比如012编码后的结果试一下就可以得出进行的md5编码。
    • 然后可以看出getFlag()的返回是乱码,分析getSecret(getFlag()).equals(getSecret(encrypt(sInput)))得出,getFlag()encrypt(sInput))相等即可,而根据getSecret()的输入参数可知,这个过程仅仅对输入进行了ascii减一的操作,我们就可以对getFlag()的返回进行ascii加一的操作。
    • 得出flag的代码
    s = 'ek`fz@q2^x/t^fn0mF^6/^rb`qanqntfg^E`hq|'
    for i in range(0, len(s)):
        print(chr(ord(s[i])+1), end='')
    
  • 用IDA动态调试应该也是可以的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1128047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入了解JavaScript中的AJAX和HTTP请求

在现代Web开发中,AJAX(Asynchronous JavaScript and XML)和HTTP请求被广泛应用于实现动态交互式网页。本文将深入探讨AJAX的概念、工作原理以及使用方法。 什么是AJAX? AJAX是一种利用JavaScript和HTTP请求与服务器进行异步通信的…

基于公开数据集,5 分钟生成个性可视化数据报告

云布道师 简介: 本次活动将基于内置电商、广告、出行、汽车、国内生产总值等公开数据集,通过DataWorks 与 MaxCompute 搭建可视化数据报告。 活动时间 2023 年 10 月 8 日-2023 年 11 月 10 日 参赛者首先前往参赛页面领取产品免费资源,依…

Redis基于布隆过滤器解决缓存穿透问题(15)

Redis基于布隆过滤器解决缓存穿透问题 1.布隆过滤器基本介绍2.布隆过滤器的优缺点3.布隆过滤器的原理4.缓存穿透问题5.解决Redis缓存穿透问题 1.布隆过滤器基本介绍 布隆过滤器适用于判断某个数据是否在集合中存在,可能存在一定的误判, Bloom Filter基本…

教育行业如何通过互联网推广品牌?媒介盒子告诉你

近年来,国民对教育的重视程度日趋上升,教育行业也日益壮大,数字化时代的来临也使教育行业推广品牌的方式更加多样化,接下来媒介盒子就和大家分享:教育行业如何通过互联网推广品牌。 一、 发布软文进行品牌推广 数字…

docker-compose安装ES7.14和Kibana7.14(有账号密码)

一、docker-compose安装ES7.14.0和kibana7.14.0 1、下载镜像 1.1、ES镜像 docker pull elasticsearch:7.14.0 1.2、kibana镜像 docker pull kibana:7.14.0 2、docker-compose安装ES和kibana 2.1、创建配置文件目录和文件 #创建目录 mkdir -p /home/es-kibana/config mkdir…

“它经济”盛行,宠物食品行业如何做好口碑营销

口碑营销能够为企业带来潜在优势,让企业实现可持续发展,好的口碑能够提升品牌的传播速度,作为宠物食品行业,更需要营造良好口碑,才能获得源源不断的客户,那么如何打造口碑呢?数字化时代下&#…

前端请求后台接口失败处理逻辑

前后分离项目,前端为uni-app(vue2),后台为java 后台api设置存在问题,部分公共接口为开放非登录用户访问权限 导致前台打开首页后立即跳转到登录提示页 怀疑是开了uni-app开发代理服务器,导致访问的代理服务…

openGaussDatakit让运维如丝般顺滑!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

全国三维数字化创新设计大赛湖北赛区省赛成功举办

须弥芥子,数字如海。10月14日—15日,2023 年数字科技文化节——第16届全国三维数字化创新设计大赛湖北赛区省赛暨产教联合体大会在武汉软件工程职业学院成功举行。 (大赛全体专家领导合影) 全国三维数字化创新设计大赛组委会副秘…

《论文阅读》LORA:大型语言模型的低秩自适应 2021

《论文阅读》LORA: LOW-RANK ADAPTATION OF LARGE LAN-GUAGE MODELS 前言简介现有方法模型架构优点前言 今天为大家带来的是《LORA: LOW-RANK ADAPTATION OF LARGE LAN-GUAGE MODELS》 出版: 时间:2021年10月16日 类型:大语言模型的微调方法 关键词: 作者:Edward Hu,…

大型电商系统的订单设计

前言:电商系统需要满足商品、订单、支付、会员、优惠券、秒杀、拼团、砍价、分销、积分等多种经营需求。其中订单模块是比较核心复杂的,需要架构师在上面下不少功夫。 0、电商系统业务架构图 电商系统,一般包括前台商城系统及后台管理系统&am…

《动手学深度学习 Pytorch版》 10.2 注意力汇聚:Nadaraya-Watson 核回归

import torch from torch import nn from d2l import torch as d2l1964 年提出的 Nadaraya-Watson 核回归模型是一个简单但完整的例子,可以用于演示具有注意力机制的机器学习。 10.2.1 生成数据集 根据下面的非线性函数生成一个人工数据集,其中噪声项 …

GoLong的学习之路(七)语法之slice(切片)

书接上回,上回书中写道:指针,并说明了基本引用类型分配内存new和特定情况下slice(切片),map,channel等集合函数的内存分配make。这篇文章就开始说明,slice。 文章目录 slice&#xf…

人生道路选择,恳请前辈指点,半路出家学习java?

人生道路选择,恳请前辈指点,半路出家学习java? 首先答案肯定是可以的。Java作为一门高级语言,它很优秀地屏蔽了许多繁枝末节。很多科班出身的人上来可能会先学C、C,要学会怎么管理内存等很底层的事情,而在开…

联想拯救者Y7000笔记本WiFi频繁掉线的坑

2023年10月的某一天开始,跟了我近4年的联想拯救者Y7000本本,无线网总是频繁的掉线,连上没几分钟就断开了,同办公室的其他电脑没这种情况出现,一开始以为是运营商网络问题,或者路由器问题导致的,…

多通道图片的卷积过程

多通道(channels)图片的卷积 如果输入图片是三维的(三个channel),例如(8,8,3),那么每一个filter的维度就是(3,3,3&#x…

一文彻底理解C语言中的指针

假定给你一块非常小的内存,这块内存只有8字节,这里也没有高级语言,没有操作系统,你操作的数据单位是单个字节,你该怎样读写这块内存呢? 注意这里的限定,再读一遍,没有高级语言&#…

rabbitmq-3.8.15集群、集群镜像模式安装部署

目录 一、环境 1、映射、域名、三墙 2、Erlang和socat安装(三台服务器都实行) 二、部署三台rabbitmq-3.8.15实例 1、rabbitmq官网下载地址 : 2、解压rabbitmq 3、添加系统变量 4、启动web插件、启动rabbitmq 5、在rabbitmq1上添加用…

(PyTorch)PyTorch中的常见运算(*、@、Mul、Matmul)

1. 矩阵与标量 矩阵(张量)每一个元素与标量进行操作。 import torch a torch.tensor([1,2]) print(a1) >>> tensor([2, 3]) 2. 哈达玛积(Mul) 两个相同尺寸的张量相乘,然后对应元素的相乘就是这个哈达玛…

常见的芯片封装技术

两边出pin的封装 1、DIP封装 DIP封装(Dual In-line Package),也叫双列直插式封装技术,指采用双列直插形式封装的集成电路芯片,绝大多数中小规模集成电路均采用这种封装形式,其引脚数一般不超过100。DIP封装…