系统 : 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. 模拟器的tableView的分割线不显示

    只有iOS9和iPhone6 plus模拟器上TableView分割线不会显示. 原因: 由于iPhone6 plus的分辨率较高,开发的时候同常都使用command + 3 或者 command + ...

  2. 20145236 《Java程序设计》第7周学习总结

    20145236 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 认识时间与日期 时间的度量 格林威治标准时间GMT 格林威治标准时间的正午是太阳抵达天空最高点 ...

  3. 各式各样table

    <html> <head>      <title>大清帝国</title>      <meta name="keywords&quo ...

  4. struts2视频学习笔记 18(自定义拦截器)

    课时18 自定义拦截 因为struts2中如文件上传,数据验证,封装请求参数到action等功能都是由系统默认的defaultStack中的拦截器实现的,所以我们定义的拦截器需要引用系统默认的defa ...

  5. ios基础篇(一)——UIView控件基本属性与常见用法

    1.frame 控件的位置和尺寸(以父控件的左上角为坐标原点(0,0)) 2.center 控件的中点(以父控件的左上角为坐标原点) 3.bounds 控件的位置和尺寸(以自己的左上角为坐标原点(0, ...

  6. JSP中,当页面为404或者500时。设置跳转到错误提示页面

    最好的就是在WEB.XML文件中配置错误代码的跳转页面,首先建立个 出现500错误的页面,提示出错了,然后再WEB.XML文件中配置,配置如下 一. 通过错误码来配置error-page <er ...

  7. [整]C#获得程序路径

    // 获取程序的基目录.System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径.System.Diagnostics.Process.Get ...

  8. Matrix-Tree定理

    感觉又学到了一个利器! 感谢Vfleaking神犇,传送门 http://vfleaking.blog.163.com/blog/static/1748076342013112523651955/   ...

  9. Oracle实现自增方式:序列+触发器

    Oracle不能像MySQL那样设置主键自增,Oracle用 <序列+触发器>的方式使数据表的一列或多列实现自增 序列sequence+触发器trigger:实现数据表S_DEPART中的 ...

  10. HDU5478 原根求解

    看别人做的很简单我也不知道是怎么写出来的 自己拿到这道题的想法就是模为素数,那必然有原根r ,将a看做r^a , b看做r^b那么只要求出幂a,b就能得到所求值a,b 自己慢慢化简就会发现可以抵消n然 ...