IDA静态动态逆向分析基础
1.JDB和IDA调试步骤2
(1).JDB调试步骤2
(2).IDA调试步骤2
(3).定位函数2
(4).开始调试2
2.动态调试Android so库函数的方法2
3.strace查看系统调用3
4.IDA静态动态分析的快捷键3
5.gdb调试4
(1).准备调试4
(2).修改权限5
(3).端口转发5
(4).ps命令查询PID5
(5).gdbserver attach调试进程5
(6).运行gdb.exe5
6.常见工具5
(1).命令工具5
7.OAT/DEX/ELF的文件格式
8.在线加解密5
(1).二维码解码器5
(2).在线JSON校验格式化工具5
(3).在线解密6
1.JDB和IDA调试步骤
(1).JDB调试步骤
①adb shell am start -D -n {pkgname}/{Activity}
②ida android_server放到手机,以root身份运行,PC端idapro远程连接、 attach、下断点
③adb forward tcp:8700 jdwp:{pid}
④jdb -connect “com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700”
(2).IDA调试步骤
①adb shell am start -D -n {pkgname}/{Activity}
②adb forward tcp:23946 tcp:23946
③ida android_server放到手机,以root身份运行,PC端idapro远程连接、 attach、下断点
④打开DDMS,查看端口
⑤jdb -connect “com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700”
(3).定位函数
①使用快捷键Ctrl+S打开segment窗口,选择so文件,这里可以使用Ctrl+F进行搜索;同时这里需要记下so文件的起始地址(A8924000)用另一个IDA打开so文件,找到对应函数的偏移位置,在上面的图可以看到偏移为(00000E9C)
绝对地址=基址+偏移地址=A8924000+00000E9C=A8924E9C
②按下快捷键G,输入A8924E9C即可跳转到正确的函数,然后使用F2或者点击前面的小圆点下一个断点
(4).开始调试
①按F9或点击绿色三角形按钮运行程序,触发断点,接着按F7/F8进行调试
2.动态调试Android so库函数的方法
./android_server p2345
p端口号
adb shell ps | grep 包名
netstat -ano | findstr "8900"
tasklist | findstr "1220"
可以通过命令强制杀死pid为2816的进程
taskkill /f /pid 1220
adb forward tcp:23946 tcp:23946
adb forward tcp:8700 jdwp:25631
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
3.strace查看系统调用
strace -f -p PID -o file.txt
4.IDA静态动态分析的快捷键
(1).F2下断点
(2).F7,f8单步步入
(3).N重名
(4).G跳到地址和函数名
(5).U取消把函数汇编变成机器码
(6).C就是把机器码变成汇编
(7).F5--->刷新
(8).P分析函数,把机器码那些东西翻译成函
(9).Ctrl+S看见系统所有的模块
(10).Ctrl+F搜索
(11).单步调试注意右上角,寄存器变蓝色表示被改了
(12).otions->number of opcode bytes可以查看机器码,填入4一行看4个机器码
(13).在hex view-1按F2可以修改机器码,再次按F2确定修改
(14).Alt+G看是THUMB还是ARM指令(寄存器ARM与THUMB转换)
(15).在函数名上按X可以看见上层调用
(16).在F5伪C/C++代码的情况下,注释是/,汇编情况下注释是;
(17).F4移动到光标处
(18).在寄存器窗口按E可以修改寄存器的值
(19).在内存窗口F2可以修改内存的值
(20).搜索特征字符串,具体操作为
①快捷键Ctrl+S,打开搜索类型选择对话框-->双击Strings,跳到字符串段-->菜单项“Search-->Text”
②快捷键Alt+T,打开文本搜索对话框,在String文本框中输入要搜索的字符串点击OK即可
(21).Tab查看函数
(22).Ctrl+1,Spance
(23).Alt+Q
(24).Alt+S
(25).G-转到一个Jump Address
(26).Create function--->P
(27).Data--->D
(28).X--->追踪某函数
(29).C--->转成代码--->N-重命名函数,多看汇编,少看伪代码
(30).H--->16进制转换
(31).A--->生成一个字符串
(32).U--->转成原数据
(33).*--->重新定义数组长度
5.gdb调试
(1).准备调试
android-ndk-r10e\prebuilt\android-arm\gdbserver
android-ndk-r10e\prebuilt\android-arm64\gdbserver
手机或模拟机已经root
adb remount
adb push gdbserver /system/bin
android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gdb.exe
android-ndk-r10e\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin\aarch64-linux-android-gdb.exe
arm-linux-androideabi-gdb.exe修改为gdb.exe
(2).修改权限
adb shell chmod 777 /system/bin/gdbserver
(3).端口转发
adb forward tcp:23946 tcp:23946
(4).ps命令查询PID
adb shell ps | grep 包名
(5).gdbserver attach调试进程
adb shell gdbserver :23946 –attach [PID]
(6).运行gdb.exe
显示汇编代码
set disassemble-next on
打开单步调试
set step-mode on
在gdb界面输入如下命令,连接上gdbserver
target remote 127.0.0.1:23946
6.常见工具
(1).命令工具
tmux: 可以关闭窗口将程序放在后台运行
jnettop: 监测网络流量,得到通讯IP、端口、URL、速率信息
netstat -tunlp:端口对应进程号、监听、收发包端口
htop: top 的增强版,当前系统负载、前台活跃进程、线程和占用
apt install tmux jnettop htop
ps -e |grep -i termux
入门Android逆向
https://mp.weixin.qq.com/s/K1tvKOzDRwiO8uDON4u_MA
7.OAT/DEX/ELF的文件格式
8.在线加解密
(1).二维码解码器
https://cli.im/deqr/
(2).在线JSON校验格式化工具
http://www.bejson.com/
http://www.jsons.cn/
(3).在线解密
https://www.ssleye.com/
http://www.ttmd5.com/rang.php
https://cmd5.com/
https://jwt.io/
https://the-x.cn/cryptography/Aes.aspx
http://tool.chacuo.net/cryptdes
关注公众号,获取更多最新文章
IDA静态动态逆向分析基础相关推荐
- 第一课 逆向分析基础知识
看雪软件安全论坛 > 初学者园地 > 『伴你成长』 > 『资料导航』 加密与解密 解密分析入门基础知识 欢迎您,youcou 您上次访问的时间是: 2009-09-23,23:53 ...
- Android手机跑逆向,Android 逆向工程:基于Xposed Hook实现动态逆向分析
Xposed是一个非常神奇的框架,对于普通用户,Xposed框架可以发挥Android系统更高的使用效率,可以随便折腾,美化优化系统.但是用于开发者而言,Xposed可以用于 逆向工程,动态逆向分析A ...
- IDA、X32dbg逆向分析易语言程序窗口标题、宽度、高度
分析背景 源于对某软件的广告删除分析,发现其为易语言程序,特此写一篇关于易语言程序的分析思路,而此篇所讲述的为修改易语言编译后程序的标题.宽度和高度.(大佬勿喷,自己分析的思路记录) 环境准备 我们首 ...
- lib静态库逆向分析
当我们要分析一个lib库里的代码时,首先需要判断这是一个静态库还是一个导入库. 库类型判断 lib文件其实是一个压缩文件. 我们可以直接使用7z打开lib文件,以查看里面的内容. 如果里面的内容是ob ...
- [系统安全] 十四.熊猫烧香病毒IDA和OD逆向分析--病毒释放过程(下)
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- IOS 逆向分析基础篇
一.环境准备 已经越狱的IOS手机一台,如果使用的是Windows笔记本另外需要mac 虚拟机 1.IOS 手机越狱及环境配置 IOS12.0 以前版本,可以用impactor 写入签名,安装越狱IP ...
- 逆向分析基础 --- 花指令实现及清除
一.基本概念 花指令:目的是干扰ida和od等软件对程序的静态分析.使这些软件无法正常反汇编出原始代码. 常用的两类反汇编算法: 1.线性扫描算法:逐行反汇编(无法将数据和内容进行区分) 2.递归行进 ...
- 菱形继承,多继承,虚继承、虚表的内存结构全面剖析(逆向分析基础)
// 声明:以下代码均在Win32_Sp3 VC6.0_DEBUG版中调试通过.. 在逆向还原代码的时候,必须得掌握了菱形继承,多继承,虚继承虚函数的内存虚表结构.所以,这篇文章献给正在学习C++ ...
- [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
最新文章
- 智慧医疗解决医生“带病工作、超负荷工作”
- javaWeb服务详解【客户端调用】(含源代码,测试通过,注释) ——测试
- android 展示星期方式,Android显示从一周到另一周的日期(星期四至星期四)
- java面试题36 已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的? ( )
- 深度学习算法简要综述(下)
- linux cocos环境变量,Linux开发cocos2dx程序环境搭建
- python gui button回调函数运行完成后弹出窗口_嵌入式设备GUI开发之GTK+入门(一)...
- 数学建模、统计学之方差分析
- [Python]爬虫v0.1
- Elasticsearch 7.x 最详细安装及配置
- OpenCV学习:Windows+VS2010+OpenCV配置
- 计算机桌面文件删除不掉是怎么了,电脑删除不了文件怎么办?教你几种好的处理方法,一学就会...
- iOS 视频边下边播
- 计算机二级考试office资料,2017年国家计算机二级office考试资料
- android屏蔽表情输入法,Android中EditText屏蔽第三方输入法表情的方法示例
- 反思,让人难以忍受的人
- Agilent/安捷伦4349B电阻测试
- 丰田生产方式和水库模型的类比分析
- pytorch——计算两个等大无序点云中的距离Earth Mover Distance
- 逻辑思维能力测试题归纳总结之计算题逻辑思维能力测试题归纳总结之计算题
热门文章
- 蓝桥 音节判断 Python
- 着色 Shading
- 单片机的调试接口 JTAG SWD
- 【Hexo+Next主题】相册功能搭建详细步骤
- 机械振动信号 常见时域、频域特征提取 Python 代码
- SSO单点登录跨域跨服务器
- MATLAB台大郭彦甫老师课程笔记:第一课:基本操作与矩阵输入
- 普乐蛙VR航天体验|航天vr设备|航空vr设备厂家案例分享
- “SEO是什么意思?”Kyw的通俗回答
- 解决idea版svn冲突问题 svn: E155015: Commit failed (details follow): svn: E155015: Aborting commit: