已经很久没有做汇编跟踪调试的事了,九十年代曾经成功破解过DOS下用Lock97加密的字幕软件,而最近的一次应该是2003年左右破解一个windows下加密狗的字幕软件未果。至今已近十年没有接触过汇编,我觉得我已经忘了怎么看汇编代码了!

  最近单位上新栏目,主持人需要提词器设备。本着节约资金、废物利用原则,我打算将单位原有一个已废弃不用的电视提词器改造成电脑提词器,拆下原CRT电视屏幕,换上一个19寸液晶显示屏,用25芯长线连上电脑,一个电脑提词器所需的硬件就一应俱全了,接下来就是软件,在网上找找,还真有一个,不过是试用版,其他的都要花钱购买,钱虽不多,但我们已经没有时间了,先试用版用着吧。

  这个试用版具备所有功能,只是每隔一段时间会跳出一个提示你购买正版的窗口,需要你不断关闭才能工作,非常麻烦;遂生破解该软件的想法。说干就干,首先下载工具软件,网上说汇编调试最好的工具SoftICE,该工具我曾经用过,它工作在最高级,动态调试最方便,不过由于脱离系统,只能用命令操作,再就是针对它的加壳程序较多,调试过程中容易中陷阱;OllyDBG是另一款汇编动态调试软件,工作在第三级,对内核型的程序就无法调试了,但对普通Windows加壳类程序调试还是很方便的,支持菜单操作,我决定使用OllyDBG进行破解,为了能用十六进制编辑和分析文件,还安装了一个UltraEdit。

  从网上下载OllyDBG安装后,又下载了很多教程学习。有大致了解后便开始跟踪调试提词器软件了,运行OllyDBG,加载提词器软件,发现根本不能运行,不过,提词器提示窗口出现了,有这个就够了。提词器软件的提示是“请插入加密狗,购买请联系...”,用UltraEdit可知其十六进制特征码为“C7 EB B2 E5 C8...”,用这些特征码在OllyDBG中搜索它们的位置可知有两个,分别为004036F4和004037A0,在这两个地址处添加内存断点,运行,果真产生中断,中断地址为77D28944,汇编指令为MOV CL,BYTE PTR DS:[EAX],其中EAX指向的地址第一次为004036F4,第二次为004037A0,指令所在地址空间为USER32,肯定是调用一API函数,反复按CTRL+F9,会来到一10062506地址,其前面一条指令为CALL DWORD PTR DS:[100C169C],OllyDBG解释为调用USER32.MessagBoxA,正是这个API函数产生的提示窗口,该指令所在空间名为krnln_fnr,通过分析可知这是一个内存映像文件,由提词器软件运行中加载,该文件名为krnln.fnr。如果不想产生提示窗口,是不是取消该指令即可呢?用UltraEdit修改krnln.fnr文件CALL DWORD PTR DS:[100C169C]指令处为nop(空指令),存盘后直接运行提词器软件,发现错误提示,不能运行,这种修改彻底失败!!!重新再来,回到10062506地址,再次CTRL+F9(执行到返回指令时中断),发现返回处前一指令为CALL DWORD PTR DS:[EBX],而此时EBX所指位置为10062460,正是调用USER32.MessagBoxA的前面,可以认为调用入口,因此用UltraEdit修改krnln.fnr文件10062460处为C3 90,其实就是retn指令,即不做任何操作即返回,存盘后直接运行提词器软件,发现运行正常,没有任何提示,那么那个随机的提示是否存在呢?让程序运行一下午,没有任何提示,破解成功!

  通过这次破解,有所心得,现总结如下:

  一、要静的下心,要细致和坚韧

  跟踪破解是一个抽丝剥茧的过程,需要静下心来,耐的住寂寞和细烦。这次破解临近春节,诸多杂事屡次中断我的破解工作,让我差点放弃(我得负责春节期间创收和春晚直播工作,工作量和压力是很大的)。最终能成功得益于自己还有那么一点点坚韧。

  二、熟悉API函数

  Windows程序使用API函数等同于DOS下用INT21中断,对API函数的熟悉可以让你清楚程序设计的思路,可以快速找到关键的中断点,可以说能够事半功倍!

  三、从资源和数据入手

  Windows程序属于消息激发的多任务程序,如果你从程序开始即调试跟踪,最后会陷入系统消息等待的死循环,因此,要找到调试点,先要分析程序的菜单,统计提示信息的内容,最后都是从内存访问产生中断而进入关键点调试的。

  四、勤做调试笔记

  做好调试记录可以让你少走弯路、少重复,可以提高调试效率!

作者寄语:尊重他人劳动成果,破解只能用作研究,不可用于盈利!尊重版权!(lowxiong原创 2012-1-11)

软件跟踪调试破解心得相关推荐

  1. c语言项目研发实训设计,关于软件设计实训心得体会(通用5篇)

    关于软件设计实训心得体会(通用5篇) 当我们经过反思,对生活有了新的看法时,往往会写一篇心得体会,这样能够让人头脑更加清醒,目标更加明确.那么好的心得体会都具备一些什么特点呢?以下是小编精心整理的关于 ...

  2. AUTOSAR实战教程 - 软件集成调试_程序跑飞一招解决

    工欲善其事必先利其器. AUTOSAR工程如此庞大的代码量,如果没有一个科学.程式化的方法来调试程序, 那么程序跑飞之后使用三板斧:打断点.看变量.对比正常代码和异常代码的变动,这显然是不能够胜任工作 ...

  3. 单片机编程软件很简单(13),Keil单片机编程软件常用调试命令

    单片机编程软件使用广泛,操作单片机编程软件的人员往往需具备专业知识.市场上有多款单片机编程软件可供大家选择,而小编较为推荐keil单片机编程软件.本文中,将主要为大家介绍这款单片机编程软件中的一些常见 ...

  4. STM32的ITM跟踪调试功能介绍及实现(一)KEIL篇

    ITM,(英文:Instrumentation Trace Macrocell,指令跟踪宏单元),是一种针对MCU进行跟踪调试的新方法,与打断点(Breakpoint)不同,ITM方法不需要暂停程序运 ...

  5. php执行跟踪_PHP使用debug_backtrace方法跟踪调试代码调用详解

    本文实例讲述了PHP使用debug_backtrace方法跟踪调试代码调用.分享给大家供大家参考,具体如下: 在开发过程中,例如要修改别人开发的代码或调试出问题的代码,需要对代码流程一步步去跟踪,找到 ...

  6. 在 Shell 脚本中跟踪调试命令的执行

    文章目录 shell 脚本调试系列 概述 shell 跟踪执行的重要性 shell 脚本调试系列 本系列的前面部分清晰地阐明了另外两种 shell 脚本调试模式:详细模式和语法检查模式,并用易于理解的 ...

  7. 跟踪调试JDK源码时遇到的问题及解决方法

    目录 问题描述 解决思路 在IntelliJ IDEA中调试JDK源码 在eclipse中调试JDK源码 总结 问题描述 最近在研究MyBatis的缓存机制,需要回顾一下HashMap的实现原理.于是 ...

  8. 局域网限速软件_2号破解app重器推荐一款强大的快捷软件

    破解版精 破解版精品软件 一些软件需要使用者付费购买才能使用其所有功能(或者才能解除使用期限),这时一些计算机高手就破解这个软件,使其不用付费也可以完全使用全部功能(或者永久使用),这种软件就叫破解版 ...

  9. 如何利用ide进行跟踪调试_使用调试器进行事后跟踪

    如何利用ide进行跟踪调试 我最近一直在使用的大多数调试器的好功能是能够在断点上记录信息. 这对于理解代码而无需修改是非常有用的,因为它涉及字节码修改. 让我们考虑一下这种非常琐碎且效率低下的函数实现 ...

最新文章

  1. ner pytorch project code
  2. MyEclipse2017在线安装SVN
  3. 易捷win10系统电脑卡在“正在关机”界面怎么处理?
  4. Ajax中GET和POST的区别
  5. 一个使用Logging Application Block的小问题[xgluxv]
  6. Qt工作笔记-QMenu::exec中使用QWidget::mapToGlobal()与QCursor::pos()之间的些许差异
  7. 原来歌这样唱也很好听
  8. 【Spring Cloud】网关 - Zuul(1.x)
  9. python的设计哲学是什么意思_Python彩蛋:哲学理念及设计思想(The Zen of Python, by Tim Peters)...
  10. Android Service 播放音乐
  11. 华为18级工程师三年心血终成趣谈网络协议文档(附详细讲解)
  12. 【Arduino 101】霍尔编码器(增量,正交)与起停式闭环控制
  13. CNNIC发布第39次《中国互联网络发展状况统计报告》
  14. Unity LOD-Level of Detail(多层次细节)用法教程
  15. 如何用python处理excel中时间重合_python读取Excel文件中的时间,并计算时间间隔...
  16. 计算机术语pc是什么意思,pc_pc是什么意思-太平洋IT百科
  17. PLC的编程语言跟CNC的编程语言有什么区别?
  18. android中的加密算法,Android中加密算法
  19. ffmpeg转码php配置,PHP+ffmpeg+nginx的配置实现视频转码
  20. php下对中国内地身份证进行验证

热门文章

  1. 核酸检测抽签系统(每次在每个班级选择%22)easyexcel+ZipOutputStream
  2. java使用POI的HSSFWorkbook导出excel模板添加各种校验
  3. 在window下使用 VScode 搭建 ARM 开发环境—— 详细版
  4. 线性代数——理解向(3)
  5. 2020年磺化工艺考试题库及磺化工艺考试APP
  6. 从我的职业生涯有感而发
  7. centos m4安装linux,Centos Docker环境下安装Dcm4che归档服务
  8. 彩虹网盘外链程序网站源码V5.1
  9. 【第二部分 | CSS】2:点缀一下html元素
  10. C语言补习(第一周笔记)