• 首页
  • Android
  • Java
  • Python
  • 信息安全
  • 闲扯淡

Guge's blog

以大多数人的努力程度之低,根本轮不到去拼天赋

arm

ARM 利用【转】

2017年1月23日 by Guge Leave a Comment

在本章中,我们将了解 ARM 处理器的基础知识,和 ARM 世界中存在的不同类型的漏洞。 我们甚至会继续利用这些漏洞,以便对整个场景有个清晰地了解。 此外,我们将研究不同的 Android root 攻击和它们在漏洞利用中的基本漏洞。 考虑到目前大多数 Android 智能手机都使用基于 ARM 的处理器,对于渗透测试人员来说,了解 ARM 及其附带的安全风险至关重要。

8.1 ARM 架构导论

ARM 是基于精简指令集(RISC)的架构,这意味着其指令比基于复杂指令集(CISC)的机器少得多。 ARM 处理器几乎遍布我们周围的所有设备,如智能手机,电视,电子书阅读器和更多的嵌入式设备。

ARM 总共有 16 个可见的通用寄存器,为 R0-R15。 在这 16 个中,有 5 个用于特殊目的。 以下是这五个寄存器及其名称:

  • R11: 帧指针 (FP)
  • R12: 过程内寄存器 (IP)
  • R13: 栈指针 (SP)
  • R14: 链接寄存器 (LR)
  • R15: 程序计数器 (PC)

下面的图展示了 ARM 架构:

[详细阅读…]

Posted in: Android Tagged: arm, ROP, 寄存器

ARM寄存器作用【留存备用】

2017年1月10日 by Guge Leave a Comment

1.80X86
寄存器有以下规则:
(1)数据寄存器(EAX、EBX、ECX、EDX):数据寄存器主要用来保存操作数和运算结果等信息。但其也有一些约定俗成的特别作用。EAX用于存放函数返回值;EBX常用作计算存储器地址时的基址寄存器;ECX用作计数器使用,EDX一些计算中的默认参与运算寄存器。
(2)变址寄存器(ESI、EDI):它们主要用于存放存储单元在段内的偏移量。
(3)指针寄存器(EBP、ESP):ESP常用作堆栈指针,指向栈顶维护堆栈变化;EBP用作栈基地址,主要用于维护该函数栈帧,可直接存取堆栈中的数据。
(4)指令指针(EIP):存放下次将要执行的指令在代码段的偏移量。

2.ARM(用户模式)
寄存器的使用必须满足下面的规则:
(1)函数间通过寄存器R0~R3来传递参数,低于32位的函数返回值存于R0。
(2)在函数中,使用寄存器R4~R11来保存局部变量。函数进入时必须保存所用到的局部变量寄存器的值,在返回前必须恢复这些寄存器的值;对于函数中没有用到的寄存器则不必进行这些操作。在Thumb中,通常只能使用寄存器 R4~R7来保存局部变量。
(3)寄存器R12 用作函数间的scratch 寄存器,记作IP
(4)寄存器R13 用作数据栈指针,记作SP。函数调用前后必须保持堆栈平衡。
(5)寄存器R14 称为连接寄存器,记作LR。它用作保存函数的返回地址。如果在函数中保存了返回地址,寄存器R14 则可以用作其他用途。
(6)寄存器R15是程序计数器,记作PC。

arm-jicunqi

 

备:一般采用B系列指令执行函数的跳转执行,其中BL指令将返回地址存储于LR寄存器,BLX指令除了地址存储于LR寄存器,还对要执行的指令进行判断(ARM or Thumb)。

Posted in: Android Tagged: arm, 寄存器

android 4.4使用gdbserver动态调试

2015年10月15日 by Guge Leave a Comment

系统环境:window8.1

模拟器:android studio下的4.4模拟器

参考:http://bbs.pediy.com/showthread.php?p=1300089

下载“android-ndk-r8″,解压,在android-ndk-r8文件夹下的“toolchains\arm-linux-androideabi-4.4.3\prebuilt”路径下可以看到适用于arm4.4.3设备的gdbserver,将其push到模拟器的相应目录(/data/local/),并赋予相应执行权限(chmod 775),然后执行“ gdbserver :23946 –-attach [PID]”命令即可。

windows端,在“android-ndk-r8\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin”目录下,运行arm-linux-androideabi-gdb.exe即可进行动态调试。

进入GDB后,依次输入:

set disassemble-next on (打开这个,显示汇编代码)
set step-mode on (打开单步调试)
target remote 127.0.0.1: 23946

使用 b 设置断点, c 运行至断点, s 和 n 进行单步调试

 

Posted in: Android Tagged: android4.4, arm, gdbserver, ndk

微信公众平台

站内搜索

标签

360 Activity ADB Android android studio apktool arm BCTF CSRF CTF drozer hacker精神 IDA ISG java线程 Json Launch4j MySQL ndk Phantomjs python ROP xposed xss Zaker 一周安全 信息安全 信息安全,干货 加壳 华尔街之狼 安全 安全干货 安全竞赛 寄存器 干货 数据库 查找 步长 每天一个小程序 爬虫 程序员 系统信息获取 脱壳 逆向 遍历

近期文章

  • 关于绕过域名(ip)的一些小技巧
  • 骨哥电台第4期:马斯克之地启示录1
  • 骨哥电台第3期:了解马斯克
  • 骨哥电台第2期:钢铁侠原型-霍华德·休斯的故事
  • 它终于让我换下了使用多年的谷歌浏览器

友情链接

CRoot' Blog
void* Future

Copyright © 2022 Guge's blog.

Omega WordPress Theme by ThemeHall