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

OD使用教程2调试篇02|解密系列

OD使用教程-调试篇02让编程改变世界ChangetheworldbyprogramOD使用教程今天小甲鱼给大家演示使用OD破解《加密与解密》里边的小程序的过程。《加密与解密》里固

OD使用教程 - 调试篇02  

让编程改变世界

Change the world by program


 

OD使用教程

  今天小甲鱼给大家演示使用OD破解《加密与解密》里边的小程序的过程。 《加密与解密》里固然破解过程说明,但是看过此书的朋友无不说太简单带过了,书中仅提到破解该程序的简要步骤。 但是我们强调一定要知其然且知其所以然!所以在今天的演示中,小甲鱼会用一样的程序讲出更全面的内容! 鸡冻吧?那上课就别睡觉了哦~  

准备工作

  拆解一个Windows程序要比拆解一个DOS程序容易得多,因为在Windows中,只要API函数被使用,想对寻找蛛丝马迹的人隐藏一些东西是比较困难的。 因此分析一个程序,用什么API函数作为切入点就显得比较关键了。这也正是小甲鱼常跟大家说破解靠的是耐心和经验的道理! 为了便于大家理解,我们先把TraceMe这个序列号验证程序流程图给大家展示出来:   TraceMe序列号验证程序流程图 [caption id="attachment_678" align="aligncenter" width="394"] TraceMe序列号验证程序流程图[/caption]  

加载目标文件调试

设置OllyDbg中断在程序的入口点。  

名词注释

System breakpoint:系统断点,OllyDbg用CreateProcessA加载DEBUG_ONLY_THIS_PROCESS参数执行,程序运行之后会触发一个INT13,在系统空间里。 Entry point of main module:主模块的入口点,即文件的入口点。 WinMain:程序的WinMain()函数入口点。   [caption id="attachment_679" align="aligncenter" width="754"] 加载目标文件调试[/caption]   1.虚拟地址:一般情况下,同一程序的同一条指令在不同系统环境下此值相同。 2.机器码:这就是CPU执行的机器代码。 3.汇编指令:和机器码对应的程序代码。    

容易犯错的调试方法

  我们来试着用上节课的方法自行来摸索一下! 演示中(具体步骤请看视频精彩演示)… …  

死循环的原因

[caption id="attachment_680" align="aligncenter" width="623"] windows消息机制[/caption]  

正确的破解方式

演示中(具体步骤请看视频精彩演示)… …  

调试技巧总结

  1.F2下断点,Alt+b打开断点编辑器,可编辑所有下过的断点,空格键可快速切换断点状态。 2.当位于某个CALL中,这时想返回到调用这个CALL的地方时,可以按“Ctrl+F9”快捷键执行返回功能。 这样OD就会停在遇到的第一个返回命令(如RET、RETF或IRET)。   3.如果跟进系统DLL提供的API函数中,此时想返回到应用程序领空里,可以按快捷键“Alt+F9”执行返回到用户代码命令。 4.所谓领空,实际上就是指在某一时刻,CPU执行的指令所在的某段代码的所有者。 5.如004013F7这类地址一般是可执行文件领空,7C8114AB这类大地址一般是系统DLL所在的地址空间。   6.程序通常读取文本框内容的字符串用的是以下两个函数:

GetDlgItemTextA(GetDlgItemTextW)

GetWindowTextA(GetWindowTextW)

  7.一般我们要结合经验通过猜测的方式多尝试几遍设陷阱,找出相关的函数。 8.按“Ctrl+G”键打开跟随表达式的窗口。 9.也可以通过“Ctrl+N”键打开应用程序的导入表(输入表),然后查看应用程序总共导入了哪些函数来以此推断需要在哪里挖坑下陷阱! 10.关于返回值,汇编代码的返回值约定是存放在eax这个寄存器里边的,如果32位的eax不够存放返回值,系统会将返回值放在内存某个位置并把该位置的地址放在eax返回。 [kml_flashembed publishmethod="static" fversion="8.0.0" movie="http://player.youku.com/player.php/sid/XNDQ0Mjk5MDEy/v.swf" width="630" height="480" targetclass="flashmovie" wmode="transparent"] Get Adobe Flash player [/kml_flashembed] [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LXLKTVVSVMNA']视频下载[/Downlink] [Downlink href='http://urlxf.qq.com/?fEfi2uQ']备胎下载[/Downlink]

转:https://www.cnblogs.com/LoveFishC/archive/2012/08/28/3846245.html



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了连接库的定义和使用方法。连接库是通过编译生成的dll文件,例如php_mysql.dll。在使用扩展时,需要去掉配置文件中的分号,并通过phpinfo查看是否正确加载了mysql连接库。详细内容请参考链接:https://www.cnblogs.com/xiaobiaomei/p/7654750.html。摘要字数:180字。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
author-avatar
青岛大学MBA校友件_176
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有