系统 : Windows xp

程序 : abexcrackme3

程序下载地址 :http://pan.baidu.com/s/1mh3TiqO

要求 : 伪造Keyfile

使用工具 :IDA

可在看雪论坛中查找关于此程序的破文:http://bbs.pediy.com/showthread.php?t=30192

IDA载入程序,找出提示破解成功的字串“Yep, keyfile found!”并定位关键代码:

CODE: ; =============== S U B R O U T I N E =======================================
CODE:
CODE: ; Attributes: noreturn
CODE:
CODE: public start
CODE: start proc near
CODE: push ; uType
CODE: push offset Caption ; "abex' 3rd crackme"
CODE: push offset Text ; "Click OK to check for the keyfile."
CODE:0040100C push ; hWnd
CODE:0040100E call MessageBoxA
CODE: push ; hTemplateFile
CODE: push 80h ; dwFlagsAndAttributes
CODE:0040101A push ; dwCreationDisposition
CODE:0040101C push ; lpSecurityAttributes
CODE:0040101E push ; dwShareMode
CODE: push 80000000h ; dwDesiredAccess
CODE: push offset FileName ; "abex.l2c"
CODE:0040102A call CreateFileA
CODE:0040102F mov ds:hFile, eax
CODE: cmp eax, 0FFFFFFFFh
CODE: jz short loc_401075
CODE: push ; lpFileSizeHigh
CODE:0040103B push ds:hFile ; hFile
CODE: call GetFileSize
CODE: cmp eax, 12h
CODE: jnz short loc_401060
CODE:0040104B push ; uType
CODE:0040104D push offset aWellDone ; "Well done!"
CODE: push offset aYepKeyfileFoun ; "Yep, keyfile found!"
CODE: push ; hWnd
CODE: call MessageBoxA
CODE:0040105E jmp short loc_401088
CODE: ; ---------------------------------------------------------------------------
CODE:
CODE: loc_401060: ; CODE XREF: start+49j
CODE: push ; uType
CODE: push offset aError ; "Error"
CODE: push offset aTheFoundFileIs ; "The found file is not a valid keyfile!"
CODE:0040106C push ; hWnd
CODE:0040106E call MessageBoxA
CODE: jmp short loc_401088
CODE: ; ---------------------------------------------------------------------------
CODE:
CODE: loc_401075: ; CODE XREF: start+37j
CODE: push ; uType
CODE: push offset aError_0 ; "Error"
CODE:0040107C push offset aHmmmmmICanTFin ; "Hmmmmm, I can't find the file!"
CODE: push ; hWnd
CODE: call MessageBoxA
CODE:
CODE: loc_401088: ; CODE XREF: start+5Ej
CODE: ; start+73j
CODE: call ExitProcess
CODE: start endp ; sp-analysis failed
CODE:

程序查找一个Keyfile,文件名为“abex.l2c”,文件长度应为18字节,这样就可以通过验证。在abexcrackme3程序路径下新建文件,文件名为“abex.l2c”,用记事本打开并将内容设置为“012345678901234567”再运行abexcrackme3即可通过验证:

拆解一个简单的KeyFile保护的更多相关文章

  1. Windows 下针对python脚本做一个简单的进程保护

    前提: 大家运行的脚本程序经常会碰到系统异常关闭.或被其他用户错杀的情况.这样就需要一个进程保护的工具. 本文结合windows 的计划任务,实现一个简单的进程保护的功能. 利用py2exe生产 ex ...

  2. 一步一步拆解一个简单的iOS轮播图(三图)

    导言(可以不看): 不吹不黑,也许是东半球最简单的iOS轮播图拆分注释(讲解不敢当)了(tree new bee).(一句话包含两个人,你能猜到有谁吗?提示:一个在卖手机,一个最近在卖书)哈哈... ...

  3. 通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护

    dapr目前更新到了1.2版本,在之前4月份的时候来自阿里的开发工程师发起了一个dapr集成Alibaba Sentinel的提案,很快被社区加入到了1.2的里程碑中并且在1.2 release 相关 ...

  4. 通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载

    在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新componen ...

  5. 通过Dapr实现一个简单的基于.net的微服务电商系统(十八)——服务保护之多级缓存

    很久没有更新dapr系列了.今天带来的是一个小的组件集成,通过多级缓存框架来实现对服务的缓存保护,依旧是一个简易的演示以及对其设计原理思路的讲解,欢迎大家转发留言和star 目录:一.通过Dapr实现 ...

  6. 通过Dapr实现一个简单的基于.net的微服务电商系统(二十)——Saga框架实现思路分享

    今天这篇博文的主要目的是分享一下我设计Saga的实现思路来抛砖引玉,其实Saga本身非常的类似于一个简单的工作流体系,相比工作流不一样的部分在于它没有工作流的复杂逻辑处理机制(比如会签),没有条件分支 ...

  7. 如何创建一个简单的C++同步锁框架(译)

    翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架 目录 介绍 背景 临界区 & 互斥 & 信号 临界区 互斥 信号 更多信息 建立锁框架的目的 B ...

  8. Shiro —— 从一个简单的例子开始

    一.Shiro是用来做权限的. 二.权限 1.基本概念: (1)安全实体:要保护的数据. (2)权限:是否有能力去操作(查看.修改.删除 )保护的数据. 2.权限的两个特性 (1)权限的继承性:A 包 ...

  9. 我们为之奋斗过的C#-----C#的一个简单理解

    我们首先来简单叙述一下什么是.NET,以及C#的一个简单理解和他们俩的一个区别. 1 .NET概述 .NET是Microsoft.NET的简称,是基于Windows平台的一种技术.它包含了能在.NET ...

随机推荐

  1. 实现IEnumberable接口和IEnumberator

    class BookEnum : IEnumerator //实现foreach语句内部,并派生 { public Book[] _book; //实现数组 ;//设置“指针” public Book ...

  2. 安装apache+php+mysql

    #yum -y install httpd   安装完成之后查看安装时生成了哪些文件: #rpm -ql httpd   绑定域名(如果没有域名可以跳过): #cd /etc/httpd/conf.d ...

  3. Understanding Weak References

    Understanding Weak References Posted by enicholas on May 4, 2006 at 5:06 PM PDT Some time ago I was ...

  4. Javascript——Math对象

    Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用其所有属性和方法.这是它与Date,String对象的区别  Math 对象属性 Math 对象方法  

  5. Java对象的序列化和反序列化实践

    2013-12-20 14:58 对象序列化的目标是将对象保存在磁盘中,或者允许在网络中直接传输对象.对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存 ...

  6. Linux-Unix版本介绍

    转自: http://blog.163.com/li_zhuangs/blog/static/195698098201182411360635/ < DOCTYPE html PUBLIC -W ...

  7. fqrouter让安卓手机登陆facebook成为可能

    大多数人向来都是在电脑上通过各种代理工具来访问一些国外网站,例如facebook,twitter,然而你是否想过可以通过你的手机来畅游这些网站呢,接下来我将介绍一种通过fqrouer实现使用安卓手机畅 ...

  8. java基础之 溢出

    堆溢出 堆(Heap)是Java存放对象实例的地方. 堆溢出可以分为以下两种情况,这两种情况都会抛出OutOfMemoryError:java heap space异常: 1.内存泄漏 内存泄漏是指对 ...

  9. 推荐一款作图神器:ProcessOn

    本人近日发现一款作图神器:ProcessOn 它是一款在线的作图工具,完全国产,前台是用HTML5  Canvas加javascript做绘图,后台用java实现数据处理和图片生成, 整站UI基本类似 ...

  10. [转] Android应用程序与SurfaceFlinger服务的关系概述和学习计划

    转自:Android应用程序与SurfaceFlinger服务的关系概述和学习计划 SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件 ...