初识IDA工具

工具

IDA工具
链接:https://pan.baidu.com/s/1Zgzpws6l2M5j1wkCZHrffw 提取码:ruyu

里面有安装密码:
PassWord:qY2jts9hEJGy

在这里插入图片描述里面分析32位和64位启动快捷方式

打开IDA工具,拖入so文件
在这里插入图片描述
ARM AND THUMB MODE SWITCH INSTRUCTIONS

This processor has two instruction encodings: ARM and THUMB.
IDA allows to specify the encoding mode for every single instruction.
For this IDA uses a virtual register T. If its value is zero, then
the ARM mode is used, otherwise the THUMB mode is used.
You can change the value of the register T using
the ‘change segment register value’ command
(the canonical hotkey is Alt-G)
该处理器有两种指令编码:ARM 和 THUMB。IDA 允许为每条指令指定编码模式。 为此,IDA 使用虚拟寄存器 T。如果其值为零,则 使用 ARM 模式,否则使用 THUMB 模式。 您可以使用以下命令更改寄存器 T 的值 “更改段寄存器值”命令 (规范热键是 Alt-G)

在这里插入图片描述
The technical support period of the Hex-Rays decompiler
has expired. You have 3 month grace period to update your license.
The grace period is counted from the expiration date.
For more information please visit https://www.hex-rays.com
Hex-Rays反编译器的技术支持期
已过期。 您有 3 个月的宽限期来更新您的许可证。
宽限期从到期日开始计算。
欲了解更多信息,请访问 https://www.hex-rays.com

第一次打开软件
在这里插入图片描述搜索要找的函数
在这里插入图片描述双击可以进入

窗口

左边窗口所有的函数

在这里插入图片描述

Exports 导出函数窗口

自己写的函数,就是导出函数
系统的库函数,就是导入函数

IDA View-A

反汇编窗口

Hex View-1

二进制窗口

Structures 结构体窗口

导入结构体窗口

Enums

枚举窗口

Imports

使用快捷键

F5直接生成伪代码

IDA调试的基本步骤

弄一个demo,并运行到手机上

在这里插入图片描述

找到客户端需要的程序

在这里插入图片描述
在这里插入图片描述

放入手机的/data/local/tmp目录下并root

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述直接运行
在这里插入图片描述
在电脑上转发端口
在这里插入图片描述
在这里插入图片描述
IDA Pro attch
在这里插入图片描述
attach 相应的进程(也就是包名)
在这里插入图片描述
成功加载(时间比较漫长)
在这里插入图片描述找到模块列表
在这里插入图片描述
找到对应的so
在这里插入图片描述搜索要调试的函数
在这里插入图片描述
在这里插入图片描述双击进入
在这里插入图片描述添加断点
在这里插入图片描述
运行这个代码
在这里插入图片描述
在指定位置(应该是函数开头)添加注释
在这里插入图片描述

IDA调试分析so文件

另一种方法: 先找到进程的pid, 然后通过pid进行查找
ps -A | grep “ndkdemo”
cat /proc/16766/maps | grep .so

开启手机的调试开关

bdopen xposed框架,打开调试

p 快捷键-识别为一个函数
a 键识别字符串
u 键不识别字符画

IDA调试分析实例

在这里插入图片描述

SUB SP,SP, #0x130
STR x28, [SP, #0x120+var_10]     @ 将x28的值存储到内存中的指定位置
STP x29, x30 [SP, #0x120+var_s0] @ 将x29和x30的值存储到内存中的指定位置
ADD x29, SP, #0x120
MRS x8, #3, c13, c0, #2 @ 将协处理器寄存器的值读取到通用寄存器 x8 中
LDR x8, [x20, #var_18] @ 将内存中指定位置的值加载到通用寄存器 x8 中
STUR x8, [x20, #var_18]
STUR x0, [x29, #var_18]
STUR x1, [x29, #var_40]
LDUR x0, [x29, #var_38] @ 将栈内存中指定位置的值加载到通用寄存器 x0 中
BL unk_7D2C98D00LDR 使用基址寻址方式,而 LDUR 使用未特权基址寻址方式。
LDUR 是 ARMv8.0 架构中新增的指令,用于在非特权模式下加载数据。

在这里插入图片描述

重置窗口
在这里插入图片描述

IDA调试问题总结

打开安卓系统调试

在这里插入图片描述

每次重启手机都要修改
adb push C:\Users\Administrator\Desktop\software\mprop\arm64-v8a\mprop /data/local/tmp
chmod 777 mprop
su
./mprop ro.debuggable 1

内嵌汇编代码

#include <stdio.h>
#include <string.h>int my_thumb(int dummy)
{__asm__("mov r0,#1 \t\n""mov r1,#2 \t\n""add r0,r0,r1 \t\n""bx lr");
}int main()
{int n = my_thumb(12);printf("result :%08x\n",n);return 0;
}

可执行程序加载so库

#include <unistd.h>
#include <stdio.h>
#include <dlfcn.h>typedef void (*pfnfoo)(void);int main()
{void *handler = dlopen("/data/local/tmp/libTargetLibrary.so", RTLD_NOW);if(NULL == handler){printf("[-] dlopen fail");return -1;}pfnfoo foo = (pfnfoo)dlsym(handler, "foo");foo();return 0;
}

windows快捷打开

@ECHO OFF
color 2f
IF EXIST tmp DEL tmp
ECHO ==============================
SET batpath=%cd%
SET idapath="D:\Program Files\IDA 7.0"
CD /d "%idapath%"
adb push "%cd%\dbgsrv\android_server" /data/local/tmp
adb shell rename /data/local/tmp/android_server /data/local/tmp/as7.0
cd /d "%batpath%"
ECHO su >>tmp
ECHO cd /data/local/tmp >>tmp
ECHO chmod 777 as7.0 >>tmp
ECHO ./as7.0 >>tmp
adb forward tcp:23946 tcp:23946
adb shell am start -D -n de.fraunhofer.sit.premiumapp/de.fraunhofer.sit.premiumapp.LauncherActivity
cd /d "%idapath%"
start ida.exe
cd /d "%batpath%"
adb shell <tmp
ECHO ==============================

IF EXIST tmp DEL tmp
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8603

idapython

IDA调试android so文件的10个技巧

在这里插入图片描述

关闭SELinux.png

在这里插入图片描述

打开系统的调试总开关

在这里插入图片描述

Nexus5x开启系统调试

请添加图片描述

密码学应用

在这里插入图片描述

附录:

查看cpu架构
在这里插入图片描述
adb shell getprop | grep ‘abi’

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

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

相关文章

PyTorch BatchNorm2d详解

通常和卷积层&#xff0c;激活函数一起使用

视频传输网安全防护体系

在电脑、手机信息安全保护得到广泛关注和普及的今天&#xff0c;监控摄像头等设备的安全防护仍为大众所忽略&#xff0c;大量视频监控网络的前端设备和数据没有任何保护&#xff0c;完全暴露在互联网中。 前端IP接入设备与后端业务系统处于直连状态&#xff0c;一旦有攻击者或…

spring boot项目整合spring security权限认证

一、准备一个spring boot项目 1、引入基础依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.sp…

自定义类型讲解

&#x1f495;痛苦难道是白忍受的吗&#xff1f;&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;自定义类型讲解 一.结构体 定义&#xff1a; 数组&#xff1a;多组相同类型元素的集合 结构体&#xff1a;多组不同类型元素的集合-->管理多组不同类型数据…

计算机视觉实验:人脸识别系统设计

实验内容 设计计算机视觉目标识别系统&#xff0c;与实际应用有关&#xff08;建议&#xff1a;最终展示形式为带界面可运行的系统&#xff09;&#xff0c;以下内容选择其中一个做。 1. 人脸识别系统设计 (1) 人脸识别系统设计&#xff08;必做&#xff09;&#xff1a;根据…

tinkerCAD案例:24. Ruler - Measuring Lengths 标尺 -量勺

tinkerCAD案例&#xff1a;24. Ruler - Measuring Lengths 标尺 - 测量长度 Project Overview: 项目概况&#xff1a; A machine shop, where any idea can become a reality, can cost millions and million of dollars. Still, the most important tool in the shop is the…

vue-cli4升级到vue-cli5的踩坑记录

前言 最近对部分项目升级了vue-cli脚手架&#xff0c;记录一下 问题一&#xff1a; scss/less/css中无法引入public下的静态资源 问题描述 在样式文件中使用静态资源路径导致编译无法通过 错误信息如下&#xff1a; Module not found: Error: Cant resolve /img/login/lo…

小研究 - 主动式微服务细粒度弹性缩放算法研究(二)

微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放&#xff0c;忽略了能够充分利用单台服务器资源的细粒度垂直缩放&#xff0c;从而导致资源浪费。为此&#xff0c;本文设计了主动式微服务细粒度弹性缩放算法…

Android 面试题 应用程序结构 十

&#x1f525; Intent 传递数据 &#x1f525; Activity、Service、BroadcastReceiver之间的通信载体 Intent 来传递数据。而ContentProvider则是共享文件。 Intent可传递的数据类型&#xff1a; a. 8种基本数据类型&#xff08;boolean byte char short int long float double…

如何配置一个永久固定的公网TCP地址来SSH远程树莓派?

文章目录 如何配置一个永久固定的公网TCP地址来SSH远程树莓派&#xff1f;前置条件命令行使用举例&#xff1a;修改cpolar配置文件 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 …

第1集丨Vue 江湖 —— Hello Vue

目录 一、简介1.1 参考网址1.2 下载 二、Hello Vue2.1 创建页面2.2 安装Live Server插件2.4 安装 vue-devtools2.5 预览效果 一、简介 Vue&#xff08;读音 /vjuː/, 类似于 view&#xff09; 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设…

app自动化测试之Appium问题分析及定位

使用 Appium 进行测试时&#xff0c;会产生大量日志&#xff0c;一旦运行过程中遇到报错&#xff0c;可以通过 Appium 服务端的日志以及客户端的日志分析排查问题。 Appium Server日志-开启服务 通过命令行的方式启动 Appium Server&#xff0c;下面来分析一下启动日志&#…

使用web-view实现网页端和uni-app端是数据传输

要实现这个功能 第一步&#xff1a;要在vue的public文件夹下面引入 <script type"text/javascript" src"https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script> 第二步&#xff1a;建立一个新的空的uni-app项目…

DHorse v1.3.0 发布,基于k8s的发布平台

综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统&#xff0c;具有持续集成、持续部署、微服务治理等功能&#xff0c;无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用&#xff0c;主要特点&#xff1a;部署简单、操作简洁、功能快速。 新增特…

Apache Doris 巨大飞跃:存算分离新架构

作者&#xff1a;马如悦 Apache Doris 创始人 历史上&#xff0c;数据分析需求的不断提升&#xff08;更大的数据规模、更快的处理速度、更低的使用成本&#xff09;和计算基础设施的不断进化&#xff08;从专用的高端硬件、到低成本的商用硬件、到云计算服务&#xff09;&…

JPEG有损图像压缩编码器(附源码)

概述 一个基本由自己实现的JPEG有损图像压缩编码器&#xff0c;基于JFIF&#xff08;JPEG文件交换格式&#xff09;标准&#xff1a; 色彩空间转换&#xff08;RGB to YUV&#xff09;色度抽样&#xff08;采样因子4:2:0&#xff09;MCU分块&#xff08;16x16的最小编码单元&…

多模态第2篇:MMGCN代码配置

一、Windows环境 1.创建并激活虚拟环境 #创建虚拟环境命名为mmgcn&#xff0c;指定python版本为3.8 conda create -n mmgcn python3.8 #激活虚拟环境 conda activate mmgcn2.安装pytorch #torch2.0.0 cu118 pip install torch2.0.0cu118 torchvision0.15.1cu118 torchaudio…

PACS系统源码:支持三维重建功能、集成放射科管理RIS系统、图文报告编辑、打印、多级审核机制

PACS系统源码 PACS系统是以最新的IT技术为基础&#xff0c;遵循医疗卫生行业IHE/DICOM3.0和HL7标准&#xff0c;开发的多功能服务器和阅片系统。通过简单高性能的阅片功能&#xff0c;支持繁忙时的影像诊断业务&#xff0c;拥有保存影像的院内Web传输及离线影像等功能&#xf…

【雕爷学编程】MicroPython动手做(11)——搭建掌控板IDE开发环境四种

为了能够打好基础&#xff0c;系统学习MicroPython&#xff0c;特地入手了二块掌控板 知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通…

【Docker 学习笔记】Docker架构及三要素

文章目录 一、Docker 简介二、Docker 架构1. Docker 客户端和服务器2. Docker 架构图3. Docker 运行流程图 三、Docker 三要素1. 镜像&#xff08;Image&#xff09;2. 容器&#xff08;Container&#xff09;3. 仓库&#xff08;Repository&#xff09; 一、Docker 简介 Dock…