自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 收藏
  • 关注

原创 IDA动态调试环境配置全流程

IDA 动态调试 Android 原生程序指南 摘要:本文介绍使用 IDA 动态调试 Android 原生层程序的方法。主要内容包括:环境搭建(root 手机、IDA、android_server)、调试原理(ptrace 技术)、调试流程(程序上传、权限设置、端口转发),以及两种调试方法(直接调试原生程序和调试 APK 中的 so 文件)。特别说明了调试 APK 时需要以调试模式启动应用,并通过 DDMS 恢复执行。文章还提供了调试过程中常见问题的解决方法,如权限不足时的处理方案。

2025-06-15 14:42:37 1571

原创 怎么通过 jvmti 去 hook java 层函数

本文介绍了如何使用JVMTI在Android上手动实现Java函数Hook。核心原理有两种方式:监听方法调用事件和修改字节码。实现步骤包括:1)创建JVMTI Agent项目,编写包含ClassFileLoadHook和MethodEntry回调的C++代码;2)编译生成.so动态库;3)通过root设备注入或应用加载的方式部署Agent。关键技术点涉及JVMTI能力设置、字节码修改和事件回调处理,为Android逆向工程和安全研究提供了一种底层实现方案。

2025-06-04 17:40:17 925

原创 JVMTI 在安卓逆向工程中的应用

JVMTI在安卓逆向工程中的应用主要包括动态代码注入、内存分析、反调试对抗和字节码修改。核心实现方式有Xposed框架(通过替换libart.so实现全局hook)、Frida(基于JavaScript脚本注入)以及自定义Native代理(直接编写JVMTI库)。典型工具包括Xposed、Frida、IDA Pro等。实战案例展示了如何通过Frida脚本hook签名校验方法,修改返回结果以绕过验证。这些技术广泛应用于方法监控、行为篡改、漏洞挖掘等场景,为安卓逆向分析提供了强大支持。

2025-06-04 16:41:02 2138

原创 认识一下jvmti(很厉害的)

JVMTI(Java Virtual Machine Tool Interface)是JVM提供的原生编程接口,用于开发调试、性能分析和监控工具。它支持访问运行时数据(类信息、线程状态、内存管理等)、控制程序执行(断点调试、字节码修改)、事件监听(类加载、GC、异常)及性能分析(方法耗时、锁竞争)。JVMTI通过C/C++本地库以代理模式工作,需注意性能影响和线程安全。典型应用包括IDE调试器(如IntelliJ)、性能工具(JProfiler)和内存分析工具(MAT)。开发时需编写回调函数并编译为动态库,

2025-06-04 16:40:04 1012

原创 ollvm混淆有哪些,怎么实现的,分析的方法有哪些,分别怎么做?

它的强大之处在于基于 LLVM IR(中间表示)进行混淆,这意味着无论是 C 还是 C++ 代码,都能在编译过程中被深度改造,变得更加难以理解。今天,我想聊聊 OLLVM 的主要混淆手段,它们是如何实现的,以及在实际分析中如何应对它们。这样一来,代码的执行路径变得难以预测,控制流图(CFG)在 IDA 里看上去会像一团乱麻。,让反编译器生成的控制流图变得更加复杂,但实际上这些逻辑永远不会被执行。,逐步拆解代码结构。,所有的基本块都会存放在一个循环里,并通过一个。正常情况下,一个函数的执行流是线性的,按照。

2025-03-21 15:19:16 1192

原创 Got表hook和inlinehook有什么区别?

通常是修改函数的前几条指令,使其跳转到自定义的 Hook 代码。都是修改函数调用流程的技术,但它们的原理和适用场景不同。Inline Hook 直接修改目标函数的。机制的 Hook 技术,主要针对。GOT Hook 是一种基于。

2025-03-18 19:26:30 512

原创 DexClassLoader 动态加载机制

文件中的类,而不需要在编译时静态引入。是 Android 提供的。示例:检测 Xposed。

2025-03-18 19:24:00 1053

原创 如何hook动态加载的dex?

(如 Frida、Inline Hook 框架)直接 Hook。从 Android 8.0 (API 26) 开始,可以使用。,可以通过 Hook 这些类的方法来劫持 DEX 加载过程。进行动态加载 DEX,可以用 Xposed Hook 其。在 Android 设备上,如果目标 App 使用。如果你无法使用 Xposed,可以使用。常见的 DEX 加载方式包括。Android 5.0 以上,,可以直接 Hook。

2025-03-18 19:18:28 520

原创 frida的inlinehook具体修改哪几条指令?(面试题)

Frida 的 inline hook 会修改目标函数入口处的指令,用跳转指令(JMP/B/BL 等)覆盖原始的几条指令,确保当目标函数被调用时,能立刻跳转到 hook 函数。架构相关性:替换前 5 个字节为相对跳转指令(E9替换对应模式下的指令(4 字节或组合 2 字节指令),用合适的跳转(B/BL)实现。为了保证正确性,Frida 会保证替换的指令块大小足够容纳跳转指令,同时把被覆盖的原始指令保存到 trampoline 中,确保能正确调用原函数或恢复原始流程。

2025-03-11 10:53:23 457

原创 安卓7.0到11.0的更新变化(简单理解)

ART 内部结构和编译机制的改变使得传统的动态 hook 技术面临巨大挑战,迫使工具和技术不断更新。系统安全性和隐私保护措施的加强(如更严格的 SELinux、隐藏 API 限制、一次性权限等)增加了动态调试和代码注入的难度。内存保护和代码完整性检查机制的完善使得逆向工程师在进行内存补丁、dump 解密后的代码时需要额外的步骤和技巧。工具适配性和动态分析环境的构建要求逆向工程师不断跟进系统更新,采用新工具并开发新的绕过技术。

2025-03-11 10:45:08 787

原创 got表hook和plt表hook的区别?(面试题)

GOT hook是通过修改可写的数据区中的函数地址来实现劫持,操作简单且适用范围广,但容易被检测。PLT hook则是修改代码段中用于转发调用的跳转指令,需要处理内存写保护问题,对通过 PLT 发起的调用有效,灵活性更高但实现复杂度也更大。GOT表hookGOT(Global Offset Table)表是一个由ELF可执行文件中的动态链接器建立的表,其中包含动态链接库中的所有外部函数的地址,当程序调用外部函数时,会从GOT表中取得外部函数的地址,然后调用该函数。

2025-03-11 10:11:57 457

原创 got表中有几种重定向的方式?(面试题)

直接修改和利用 lazy binding 进行间接修改。选择哪种方式取决于目标符号的绑定方式以及你对稳定性、隐蔽性的需求。

2025-03-11 10:02:54 313

原创 为什么可以删除section节区?(面试题)

也就是说,操作系统加载程序时根据的是程序头(Program Header Table),而不是节区信息。总的来说,删除 section 节区是可行的,因为这些信息对运行时加载没有影响,只是对调试和静态分析有帮助。ELF section修复的一些思考。ELF文件中的各个节区。在 ELF 格式中,

2025-03-11 09:53:09 204

原创 init arry的作用,可以没有init arry嘛?(面试题)

是 ELF(Executable and Linkable Format)格式中的。相关的问题,欢迎提供具体场景,我可以给出更详细的建议!frida hook init_array自吐新解。对init_array段调用的方法进行Hook。init_array原理简单说明。当程序启动时,动态链接器 (

2025-03-10 21:18:49 686

原创 S0 相关的代码保护、加密执行或者反调试机制(面试题)

具体的加密方式(比如使用了某种特殊的加密算法,或者是 Android 反调试手段),我可以给出更具体的方案!

2025-03-10 21:06:49 371 1

原创 针对so层不固定位置的动态加密,怎么解决?(面试题)

Android逆向之破解某应用加密算法(动态调试so和hook so代码):so 代码动态解密后才执行,我们可以在解密完成后获取解密后的代码或数据。Android逆向之旅—动态方式破解apk进阶篇(IDA调试so源码)如果你有更具体的加密场景,欢迎提供更多信息,我可以给出更详细的方案!某些 so 在运行时生成密钥,解密后再用。某APP密码加密算法分析。

2025-03-10 21:05:30 667 2

原创 got表hook和inlinehook的优缺?(面试题)

GOT(Global Offset Table)Hook 和 Inline Hook 是两种常见的函数劫持(hooking)技术,广泛用于逆向分析、动态调试、函数拦截等场景。两者各有优缺点,适用于不同需求。Android Hook技术学习——常见的Hook技术方案总结。在实际应用中,通常结合两者使用。

2025-03-10 20:59:01 959

原创 Dex2c的分析手段?(面试题)

静态分析主要用于检查 Dex2C 生成的 C 代码是否存在潜在问题,如代码膨胀、冗余计算、JNI 交互等。动态分析用于监测 Dex2C 代码在运行时的行为,检测性能、JNI 调用、内存占用等问题。观察 Dex2C 代码是否频繁调用 JNI,导致额外的开销。若 JNI 过于频繁,则可能影响性能。[原创]APP加固dex解密流程分析。进行深入分析,找出潜在的性能问题。Dex2C 的分析主要涉及。使用 Android。

2025-03-10 20:55:48 1254 1

原创 为什么Dex2C会影响性能?(面试题)

虽然 Dex2C 通过直接转换 C 代码减少了 Java 字节码的解释开销,但由于 JNI 调用、GC 交互、编译优化差异、代码膨胀等问题,在某些场景下反而会导致性能下降。因此,是否使用 Dex2C 需要根据具体的应用场景来权衡。

2025-03-10 20:52:46 218

原创 ollvm中的不透明谓词有了解么?针对不透明谓词是怎么解決的?(面试题)

不透明谓词在 LLVM 中是一个重要的优化问题,编译器通过条件简化、引入假设、使用分析工具和代码生成时的优化等方法来解决这一问题。通过这些技术,编译器能够更有效地处理不透明谓词,从而提高生成代码的性能和效率。

2025-03-10 20:48:22 495

原创 Unicorn里面一些问题(面试题)

在面试中,展示你对 Unicorn 的理解、应用场景、优势、常见问题及解决方案,以及个人经验,可以帮助你在技术面试中脱颖而出。确保在回答时结合具体的实例和经验,以增强说服力。

2025-03-10 20:43:12 448 1

原创 Android的设备指纹防护(面试题)

设备指纹防护是保护用户隐私和安全的重要措施。通过使用 Android 提供的安全 API、限制敏感信息的访问、实施混淆和加密技术,以及增强用户隐私控制,开发者可以有效地降低设备指纹被滥用的风险。始终关注安全最佳实践,以确保应用程序的安全性和用户的信任。

2025-03-10 20:37:15 654

原创 ART(Android Runtime)下 JNI 静态注册流程解析

来自动完成 Java 方法与本地(Native)方法的关联,不需要额外的。在 C/C++ 代码中,按照。静态注册是 JNI 方法的。在 Java 代码中,使用。,静态注册比动态注册略快。,因为方法名必须遵循。

2025-03-05 20:57:38 980

原创 FridaHook_initarray 介绍

汇编程序通常分为几个段,每个段用于不同的目的。代码段(.text):存放程序的可执行指令。数据段(.data):存放已初始化的全局变量和静态变量。BSS 段(.bss):存放未初始化的全局变量和静态变量。堆栈段(.stack):用于存放函数调用时的局部变量和返回地址。_start:;程序入口.data:定义数据段,存放已初始化的变量。.data定义一个名为 myVar 的变量,初始值为 10.text:定义代码段,存放可执行指令。.text.equ:定义常量。定义常量 PI.byte。

2025-03-05 20:41:40 599

原创 ARM 可执行程序的生成过程

汇编程序通常分为几个段,每个段用于不同的目的。代码段(.text):存放程序的可执行指令。数据段(.data):存放已初始化的全局变量和静态变量。BSS 段(.bss):存放未初始化的全局变量和静态变量。堆栈段(.stack):用于存放函数调用时的局部变量和返回地址。_start:;程序入口.data:定义数据段,存放已初始化的变量。.data定义一个名为 myVar 的变量,初始值为 10.text:定义代码段,存放可执行指令。.text.equ:定义常量。定义常量 PI.byte。

2025-02-25 11:14:11 557

原创 安卓逆向之脱壳-认识一下动态加载 双亲委派(二)

自定义通常用于插件化框架中,它允许我们根据特定的需求,动态加载外部的dex文件或插件包。在实现自定义处理父类委托问题:如果插件中有类与系统类或主应用类冲突,需要通过委托机制避免重复加载。动态加载插件:使用自定义的加载插件中的.dex文件或.jar文件。// 使用系统默认的类加载器作为父加载器@Override// 逻辑:从插件的 dex 文件中读取字节码// 读取文件内容并返回字节数据我们可以通过重写方法来确保自定义类加载器按照双亲委派模式加载类。

2025-01-29 16:16:16 1779 1

原创 安卓逆向之脱壳-认识一下动态加载 双亲委派(一)

Android 使用多种来加载不同类型的类。默认情况下,Android 使用的是来加载应用程序的dex文件。系统 ClassLoader (:它负责加载 Android 系统核心库(如android.*和java.*等)。应用 ClassLoader (:负责加载应用程序的主dex文件。用户 ClassLoader (:在一些高级应用中,允许动态加载外部的dex文件(例如插件化框架)。每个都有自己的类加载路径,它们通过层层委托的方式来加载类。委托模式意味着一个会请求父加载类,直到找到该类为止。如果父。

2025-01-29 16:14:51 1715 1

原创 ARM指令修复逻辑与对齐机制

在ARM指令修复过程中,PC相关的指令通过LDR指令进行跳转,而PC无关的指令则可以直接复制。插入的NOP指令用于确保指令的4字节对齐,以提高性能和简化硬件设计。理解这些基本概念对于深入学习ARM架构和优化程序性能至关重要。

2025-01-17 13:36:03 482

原创 ARM处理器的指令流水技术与跳转机制

ARM处理器通过指令流水技术和PC寄存器的巧妙设计,实现了高效的指令执行和灵活的跳转机制。理解这些基本概念对于深入学习ARM架构和嵌入式系统开发至关重要。通过合理利用ARM指令集,开发者可以编写出高效、灵活的程序,充分发挥ARM处理器的性能优势。

2025-01-17 13:27:56 427

原创 计算机网络期末复习之数据链路层

然而,交换机对广播帧是进行泛洪操作的,即当交换机收到一个广播帧时,它会将这个广播帧从除接收端口外的所有端口转发出去,所以通过交换机连接的所有设备仍然在同一个广播域内。此时交换机的 MAC 地址表中已经有了主机 00 - e1 - d5 - 00 - 23 - a1 对应的端口 1 的记录,所以交换机会将确认帧从端口 1 转发。一般是方圆几千米以内。主机 00 - e1 - d5 - 00 - 23 - c1 收到数据帧后,向主机 00 - e1 - d5 - 00 - 23 - a1 发送确认帧。

2024-12-31 16:04:39 726

原创 计算机网络期末复习之网络层

解析:我们要先知道题的意思,E到A,B,C,D的距离是8,10,12,6. 题目给出的表的意思是A,B,C,D到Net网络的距离,E想到达Net网络需要通过他们四个中的其中一个就行,这种情况是单个最近的,我们需要做的是,对比他们四个通过谁到达Net网络最近(eg:距离等于E到A的距离加上A到Net网络的距离)IP数据报的分片遵循以下规则:分片后的每个片段大小应不超过MTU,并且除最后一个分片外,每个分片的有效载荷(即分片的数据部分)长度必须是8字节的倍数。因此,还需要一个额外的分片来包含剩余的28B数据。

2024-12-31 13:15:38 1257

原创 套接字、网络字节序、IP地址转换、地址结构及关键函数

套接字(Socket)是网络通信的端点,提供了一组用于发送和接收数据的接口。套接字抽象了网络协议的细节,允许开发者专注于数据交换逻辑。套接字编程通常基于BSD套接字接口,这是一个广泛支持的标准。套接字类型流式套接字(Stream Sockets):基于TCP协议,提供面向连接的、可靠的数据传输。数据报套接字(Datagram Sockets):基于UDP协议,提供无连接的、不保证可靠的数据传输。原始套接字(Raw Sockets):允许直接访问底层协议,通常用于网络监控和测试。

2024-12-23 12:03:48 1291

原创 IPC协议获取签名信息

IPC(Inter-Process Communication,进程间通信)协议是一组规则和机制,用于在不同进程之间交换数据和信息。IPC协议允许在同一台机器或通过网络连接的不同机器上的进程进行有效的通信与协作。常见的IPC机制包括管道(Pipes)、消息队列(Message Queues)、共享内存(Shared Memory)、套接字(Sockets)等。在IPC通信中,签名信息用于确保数据的完整性、真实性和不可否认性。

2024-12-23 11:40:45 1012

原创 AES 加密算法及其原理与逆向实战中的应用场景详解(一)

高级加密标准()是由美国国家标准与技术研究院(NIST)于2001年发布的一种对称加密算法。AES 取代了原有的 DES(数据加密标准),成为现代加密领域的主流标准。AES 具备高效、安全、灵活等优点,广泛应用于数据保护、通信加密、存储安全等多个领域。AES 加密算法作为现代信息安全的重要基石,凭借其高效性和强大的安全性,广泛应用于各类数据保护场景。在逆向实战中,深入理解 AES 的原理和实现,对于破解加密通信、分析软件保护机制、发现和利用漏洞以及进行数据恢复与取证等任务至关重要。

2024-12-20 16:02:21 2068

原创 对称加密算法

对称加密算法是信息安全领域的重要组成部分,虽然它存在密钥管理和分发上的挑战,但其高效性和计算速度使其仍然在许多实际应用中占据重要地位。随着技术的发展,结合对称加密和非对称加密(如在 SSL/TLS 中使用的混合加密方法)已成为解决密钥分发问题和保障数据安全的最佳实践。尽管对称加密算法因其速度和效率在许多场合仍然具有优势,但从逆向分析的角度来看,它们面临许多挑战和潜在的安全漏洞。主要的安全隐患包括密钥管理问题、暴力破解攻击、已知明文攻击、密码算法的设计弱点、侧信道攻击等。密钥管理。

2024-12-18 13:14:45 932

原创 加密算法之单向散列算法

背景:现有的序列号加密算法大都是软件开发者自行设计的,大部分相当简单。有些算法,其作者虽 然下了很大的工夫,却往往达不到希望达到的效果。其实,有很多成熟的算法可以使用,特别是密 码学中一些强度比较高的算法,例如RSA 、BlowFish 、MD5等。对这些算法,网上有大量的源码或 编译好的库(当然这些库中可能会有一些漏洞),可以直接加以利用,我们要做的只是利用搜索引 擎找到它们并将它们嵌入自己的程序。

2024-12-12 21:12:43 1165

原创 安卓逆向之认识一下ioctl`函数

ioctl是一个功能强大的系统调用,允许用户空间程序与内核空间的设备驱动进行通信。它的灵活性使得它在设备控制和管理中非常重要。在 Android 逆向工程中,理解ioctl的使用和参数对于分析和修改设备驱动程序的行为至关重要。通过具体的示例代码,可以看到如何在实际应用中使用ioctl来获取设备信息并进行状态检查。

2024-12-12 16:30:29 1028

原创 基于Dockerfile的博客管理系统的容器化部署

目录1.任务描述1.1课题的基本内容一个基于SpringBoot + Vue开发的前后端分离博客项目,后端涵盖新建项目、整合 Mybatis Plus、Shiro + JWT 等技术,还包括异常处理、实体校验等。前端涉及环境准备、组件安装、页面路由、登录页面等开发,如安装 element-ui、axios 等,还实现了博客列表、编辑、详情等页面及路由权限拦截。1.2 项目整体技术架构该博客管理系统的技术架构遵循现代分布式系统设计原则,采用了前后端分离的开发模式。

2024-12-12 14:54:12 796

原创 安卓逆向之内部类没有重载方法的话,会是其他什么情况?(以及解决方案)

内部类没有重载方法不一定是唯一原因,可能是因为类没有普通的重载方法、使用了回调、接口、匿名类等机制。通过逐步打印类的信息(方法、构造函数、字段、父类等),你可以更详细地了解该类的结构,进而决定如何 Hook 该类的行为。[*] 找到嵌套类: com.ishumei.O000O00000OoO.O000O00000o0O\$1] 内部类没有重载方法.[*] 内部类所有方法:[*] 内部类所有构造函数:[*] 内部类所有字段:匿名类实现:这个类是一个内部匿名类,它实现了某些接口(很可能是。

2024-12-09 14:33:05 1236

原创 frida_hook_dlopen

Frida 脚本用于拦截 Android 应用程序中的dlopen和函数。这两个函数用于动态加载共享库,脚本通过拦截这些函数的调用来记录加载的库的路径。

2024-11-28 00:05:57 981

基于Dockerfile的博客管理系统的容器化部署

基于Dockerfile的博客管理系统的容器化部署

2024-12-12

实战代码之unicorn模拟调用JNI接口函数(详细注释版,配合前面几篇食用更舒服(*^-^*))

运行结果

2024-11-14

(头歌)计算机组成原理-运算器设计(全通关及电路图)

(头歌)计算机组成原理-运算器设计(全通关及电路图)

2024-05-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除