-
您的位置:首页 → 精文荟萃 → 破解文章 → duelist crackme 2 破解(上)
duelist crackme 2 破解(上)
时间:2004/10/15 0:57:00来源:本站整理作者:蓝点我要评论(0)
-
目标 duelist crackme 2
目标URL http:\\go.163.com\~ddxia\crackme\DueList\Due-cm2.zip
工具 SoftIce4.01 for NT WinHex winapi.hlp
我们读一下它的readme.txt,就知道这是一道解keyfile类型crackme。
keyfile类型解决方法:
1、得到文件名
2、通过分析代码来获得文件内容!
首先运行它,看看有什么出错消息---->>"你的使用期限到了,请拷贝keyfile到
该目录下!"。它要读取文件一定用CreateFileA这个API函数。于是在目标程序运行前下
中断
bpx CreateFileA
被拦截下来,按F11回到程序代码中
001B:0040105C 6A00 PUSH 00
001B:0040105E 686F214000 PUSH 0040216F
001B:00401063 6A03 PUSH 03
001B:00401065 6A00 PUSH 00
001B:00401067 6A03 PUSH 03
001B:00401069 68000000C0 PUSH C0000000
001B:0040106E 6879204000 PUSH 00402079
001B:00401073 E80B020000 CALL KERNEL32!CreateFileA
001B:00401078 83F8FF CMP EAX,-01
^^^^^^^^^^^^^^^^^^^^^^^^^^------>如果打开文件失败,eax=-01
001B:0040107B 751D JNZ 0040109A
001B:0040107D 6A00 PUSH 00
001B:0040107F 6801204000 PUSH 00402001
001B:00401084 6817204000 PUSH 00402017
001B:00401089 6A00 PUSH 00
001B:0040108B E8D7020000 CALL USER32!MessageBoxA
^^^^^^^^^^^^^^^^^^^^^^^^^^------>出错信息
001B:00401090 E824020000 CALL KERNEL32!ExitProcess
让我们看一下调用CreateFileA API的参数含义。
HANDLE CreateFile(
LPCTSTR lpFileName, // 指向文件名的指针
DWORD dwDesiredAccess, //读写模式
DWORD dwShareMode, // 共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性指针
DWORD dwCreationDistribution, // 创建标志
DWORD dwFlagsAndAttributes, // 文件属性
HANDLE hTemplateFile // 文件属性的复制句柄
);
其中我们最关心的是 LPCTSTR lpFileName这个参数。需要注意的是在API
的调用中ASM和高级语言是有区别的,最先出现的参数,ASM中最后PUSH。然后我们
就看出是以下这行代码是文件名指针
PUSH 00402079
d 402079
看到什么??-----due-cm2.dat----->>>keyfile的名字
到目前我们就完成了第一步!
接着我们进行下面一步进行挖掘文件的内容,好象有的点观看挖掘老山汉墓的
感觉 呵呵~~~~~~
在目录下建一个文件名字为due-cm2.dat,再跟踪看一看是怎样的情形。
001B:00401073 E80B020000 CALL KERNEL32!CreateFileA
001B:00401078 83F8FF CMP EAX,-01
^^^^^^^^^^^^^^^^^^^^^^^^^^------>如果打开文件失败,eax=-01
001B:0040107B 751D JNZ 0040109A
^^^^^^^^^^^^^^^^^^^^^^^^^^------>如果成功,就跳到40109A
然后看一看40109A的代码
001B:0040109A 6A00 PUSH 00 //数据结构指针
001B:0040109C 6873214000 PUSH 00402173 //实际读取的字节数
001B:004010A1 6A46 PUSH 46 //需要读取的字节数
001B:004010A3 681A214000 PUSH 0040211A //存放内容的文件指针
001B:004010A8 50 PUSH EAX //文件的句柄
001B:004010A9 E82F020000 CALL KERNEL32!ReadFile
^^^^^^^^^^^^^^^^^^^^^^^^^^------>返回参数为非零,就成功
ReadFile API中需要注意的三个参数:402173 46 40211A
001B:004010AE 85C0 TEST EAX,EAX
001B:004010B0 7502 JNZ 004010B4
001B:004010B2 EB43 JMP 004010F7
^^^^^^^^^^^^^^^^^^^^^^^^^^------>出错跳远
001B:004010B4 33DB XOR EBX,EBX
001B:004010B6 33F6 XOR ESI,ESI
001B:004010B8 833D7321400012 CMP DWORD PTR [00402173],12
^^^^^^^^^^^^^^^^^^^^^^^^^^------>文件的字节数是否大于12,
注意12是十六进制=18,小于18个字节就出错!
001B:004010BF 7C36 JL 004010F7
001B:004010C1 8A831A214000 MOV AL,[EBX+0040211A]
^^^^^^^^^^^^^^^^^^^^^^^^^^------>取每一个字节进行比较
001B:004010C7 3C00 CMP AL,00
001B:004010C9 7408 JZ 004010D3
001B:004010CB 3C01 CMP AL,01
001B:004010CD 7501 JNZ 004010D0
001B:004010CF 46 INC ESI
^^^^^^^^^^^^^^^^^^^^^^^^^^------>ESI是累计01的个数
001B:004010D0 43 INC EBX
^^^^^^^^^^^^^^^^^^^^^^^^^^------>文件偏移指针
001B:004010D1 EBEE JMP 004010C1
001B:004010D3 83FE02 CMP ESI,02
^^^^^^^^^^^^^^^^^^^^^^^^^^------>01的个数要大于等于2
001B:004010D6 7C1F JL 004010F7
001B:004010D8 33F6 XOR ESI,ESI
001B:004010DA 33DB XOR EBX,EBX
001B:004010DC 8A831A214000 MOV AL,[EBX+0040211A]
001B:004010E2 3C00 CMP AL,00
001B:004010E4 7409 JZ 004010EF
^^^^^^^^^^^^^^^^^^^^^^^^^^------>判断是否到文件尾部
001B:004010E6 3C01 CMP AL,01
001B:004010E8 7405 JZ 004010EF
001B:004010EA 03F0 ADD ESI,EAX
^^^^^^^^^^^^^^^^^^^^^^^^^^------>当不等于01和00的时候进行
累加
001B:004010EC 43 INC EBX
001B:004010ED EBED JMP 004010DC
001B:004010EF 81FED5010000 CMP ESI,000001D5
^^^^^^^^^^^^^^^^^^^^^^^^^^------>当累加到1D5时,就跳转,
否则出错!!!
001B:004010F5 741D JZ 00401114
001B:004010F7 6A00 PUSH 00
001B:004010F9 6801204000 PUSH 00402001
001B:004010FE 6886204000 PUSH 00402086
001B:00401103 6A00 PUSH 00
001B:00401105 E85D020000 CALL USER32!MessageBoxA
^^^^^^^^^^^^^^^^^^^^^^^^^^------>错误信息。
001B:0040110A E8AA010000 CALL KERNEL32!ExitProcess
到这里我们中场休息10分钟,看看目前战果如何?^_^
1、文件的长度至少18个字节。
2、文件中01的字节至少有2个。
3、文件中再遇到01字节前,至少累加和为1D5。
aa+aa+81=1d5 (十六进制数字顺便取)
文件内容至少是这样 AA AA 81 01 01 00 00......凑够18个字节就行了
|
相关阅读
Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
-
热门文章
去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>