热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

0基础自学破解长达1天后的经验总结

在没接触破解之前,觉得这玩意太神秘、遥不可及了。在怀着畏惧的内心,真正耐心的接触破解长达1天后,才发现,简单的破解是那么的容

在没接触破解之前,觉得这玩意太神秘、遥不可及了。在怀着畏惧的内心,真正耐心的接触 破解 长达1天后,才发现,简单的破解是那么的容易。在此来略微总结下这1天的学习后,自己吸取领悟的一些原理。
1.        壳、调试工具OD以及简单的汇编知识
1.1        壳。
破解一般有几个步骤,加载被加壳的软件----观察壳的入口点特征 以及分析 壳的类型 和
壳的型号(即出厂厂家) ------寻找入口点 ----脱壳 ------修复(这是门学问) ------EP断优化 -----运行软件后加载OD,这时候观察是否已经完整脱壳---OVER!!!
*壳一般分两种,国产和进口的!!!当然,另一种分法是 压缩壳和加密壳!!!压缩壳的原理和鉴别是非常简单的。
1.1.1 如何鉴别壳是压缩壳?
方法一:当软件加载OD后,OD会有提示:此乃压缩壳! 谓之方法一!
方法二:顾名思义,压缩壳就是压压压缩缩缩,压缩壳的入口一般会有pushad、pushaf之类的指令,这其实是将入口地址的一些相关信息压进了堆栈,最后通过popad、popaf之类的指令再将它们弹出堆栈,popad第一个返回的EAX中存放的就是软件的真正的入口地址。
1.1.2 如何鉴别壳是加密壳?
方法一:当软件加载OD后,OD会有提示:此乃加密壳! 谓之方法一!
方法二:骚泪,这方面的内容还没有接触过,不敢妄谈。。。

1.2        调试工具OD介绍。
1.2.1窗口介绍:常规的OD一般有5个窗口,左上角是反汇编窗口,右上角是寄存器窗口,左下角是数据窗口,右下角是堆栈窗口,还有一个信息提示窗口是夹在在 反汇编和数据窗口的中间。
1.2.2菜单介绍: 这没什么好介绍的。。。真的。。。(好吧,主要是东西太多了,要写个半天。)
1.2.3 快捷键图标介绍: 从左到右依次为:打开、重载、关闭、F9运行程序、暂停程序、步入、步过、跟入、跟过、执行到返回(CTRL+F9) 以及 转到反汇编窗口的地址(这个没用过)。

接着往右数依次为:显示记录窗口、*模块(dll)窗口、*内存窗口、*线程窗口、Windows窗口、句柄窗口、*反汇编窗口、补丁窗口、*堆栈窗口、*断点窗口、显示参考窗口 以及 其他。(*代表比较重要。)

1.2.4 寄存器窗口详解。
我们选择的寄存器是FPU。
前8个寄存器都是32位寄存器。分别为:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI
EAX和EDX一般作为默认返回值来使用。当然,他们也拥有所有其他通用寄存器同样的功能。ESP是指针寄存器,永远指向栈顶,EBP同样是指针寄存器,他可以自由的访问堆栈段。
EIP寄存器记录当前的指令所在的虚拟内存的位置;
CPAZSTDO是8个标志位寄存器,标志位是非常重要的,虽然常常被我们冷落。他们一般记录的是当前的汇编指令操作后的一些重要信息。比如add指令会至少返回一个cf和of值,用来表明是否进位或者溢出。条件跳转指令,CPU都是根据标志位来决定是否执行跳转。
St(0)~st(7)是8个浮点寄存器。浮点寄存器,顾名思义,是操作浮点的寄存器。所有操作浮点的相关指令,都会用到浮点寄存器。
DR(0)~DR(7)寄存器,未在FPU界面显示,其实他们是调试寄存器。

 

 

1.3        简单的汇编知识。
随便找点书看看就行,这玩意还是很简单的。 

2.        破解方案
破解的方法,按照我看了一些相关资料,整理出以下6种方法:
0.1        单步跟踪之霸王硬上弓法
0.2        堆栈指针观察法
0.3        内存断点法
0.4        Ctrl+F 搜索法
0.5        模拟跟踪法
0.6        最后一次异常法
这些还是比较简单的。不详细说了。

3.        CALL和retn的本质。
3.1 call的本质:
0.1.向堆栈中压入下一行程序的地址;
0.2.JMP到call的子程序地址处。
3.2 Retn的本质:
0.1.将当前的ESP中指向的地址出栈;
0.2.JMP到这个地址。

4.        hr esp-4
其实就是硬件访问,访问啥?访问谁访问了入口地址EAX。为什么要-4,因为-4处存放的就是EAX。这涉及到压栈顺序了,不多说 ,哈哈!!!!

5.        内存断点、硬件断点 的区别。
区别就是,内存断点是调用DR(0)~7调试寄存器。而硬断是直接把改地址的指令修改为int 3或者说是CC断点,这也是为什么每次硬断后需要删除硬断的原因。
因为代码都被你改了。。。。

简单就说那么多,要吃饭捏!!!
最后想说的是,学破解是门耐心活,不要急,急不来的。1天掌握破解,虽然说是有可能的,但对大多数人来说还是有一点难度的。

 

注意:请不要用于非法用途,谢谢。


推荐阅读
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 在需要对iPhone进行全面备份时,有时会遇到电脑无法识别设备的情况。本文将详细分析导致这一问题的可能原因,并提供有效的解决方案。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • 本文详细探讨了在ASP.NET环境中通过加密数据库连接字符串来提升数据安全性的方法。加密技术不仅能够有效防止敏感信息泄露,还能增强应用程序的整体安全性。文中介绍了多种加密手段及其实施步骤,帮助开发者在日常开发过程中更好地保护数据库连接信息,确保数据传输的安全可靠。 ... [详细]
author-avatar
mobiledu2502890657
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有