环境
windows xp sp3

工具
1.exeinfo pe
2.ollydbg
3.WinHex

查壳
和上一个一样,OD载入判断出

测试
运行后发现是没有任何提示,而且没有输入serial的窗口,通过任务管理器可以看出程序的名称写有“Uncracked”,可以猜测是keyfile了。

也可以通过OD载入后观察出来:

00401016  |.  6A 00         push 0x0                                 ; /hTemplateFile = NULL
00401018  |.  68 80000000   push 0x80                                ; |Attributes = NORMAL
0040101D  |.  6A 03         push 0x3                                 ; |Mode = OPEN_EXISTING
0040101F  |.  6A 00         push 0x0                                 ; |pSecurity = NULL
00401021  |.  6A 03         push 0x3                                 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE
00401023  |.  68 000000C0   push 0xC0000000                          ; |Access = GENERIC_READ|GENERIC_WRITE
00401028  |.  68 D7204000   push Cruehead.004020D7                   ; |FileName = "CRACKME3.KEY"
0040102D  |.  E8 76040000   call <jmp.&KERNEL32.CreateFileA>         ; \CreateFileA
00401032  |.  83F8 FF       cmp eax,-0x1                             ;  判断文件是否存在
00401035  |.  75 0C         jnz XCruehead.00401043
00401037  |>  68 0E214000   push Cruehead.0040210E                   ;  ASCII "CrackMe v3.0             "
0040103C  |.  E8 B4020000   call Cruehead.004012F5
00401041  |.  EB 6B         jmp XCruehead.004010AE
00401043  |>  A3 F5204000   mov dword ptr ds:[0x4020F5],eax
00401048  |.  B8 12000000   mov eax,0x12
0040104D  |.  BB 08204000   mov ebx,Cruehead.00402008
00401052  |.  6A 00         push 0x0                                 ; /pOverlapped = NULL
00401054  |.  68 A0214000   push Cruehead.004021A0                   ; |pBytesRead = Cruehead.004021A0
00401059  |.  50            push eax                                 ; |BytesToRead => 12 (18.)
0040105A  |.  53            push ebx                                 ; |Buffer => Cruehead.00402008
0040105B  |.  FF35 F5204000 push dword ptr ds:[0x4020F5]             ; |hFile = NULL
00401061  |.  E8 30040000   call <jmp.&KERNEL32.ReadFile>            ; \ReadFile
00401066  |.  833D A0214000>cmp dword ptr ds:[0x4021A0],0x12         ;  这里是确认keyfile是否存在0x12个字符
0040106D  |.^ 75 C8         jnz XCruehead.00401037
0040106F  |.  68 08204000   push Cruehead.00402008
00401074  |.  E8 98020000   call Cruehead.00401311                   ;  将前14个字符进行计算,结果保存在[0x4020F9]中
00401079  |.  8135 F9204000>xor dword ptr ds:[0x4020F9],0x12345678   ;  这里是计算异或
00401083  |.  83C4 04       add esp,0x4
00401086  |.  68 08204000   push Cruehead.00402008
0040108B  |.  E8 AC020000   call Cruehead.0040133C                   ;  这里是取keyfile中后4个字符
00401090  |.  83C4 04       add esp,0x4
00401093  |.  3B05 F9204000 cmp eax,dword ptr ds:[0x4020F9]          ;  比较是否相同
00401099  |.  0F94C0        sete al
0040109C  |.  50            push eax
0040109D  |.  84C0          test al,al
0040109F  |.^ 74 96         je XCruehead.00401037

可以在[00401028]处得知要的keyfile名称。接下来就是读取keyfile文件内是否存在18个字符(0x12)。不存在就跳转。

00401311  /$  33C9          xor ecx,ecx
00401313  |.  33C0          xor eax,eax
00401315  |.  8B7424 04     mov esi,dword ptr ss:[esp+0x4]
00401319  |.  B3 41         mov bl,0x41
0040131B  |>  8A06          /mov al,byte ptr ds:[esi]
0040131D  |.  32C3          |xor al,bl
0040131F  |.  8806          |mov byte ptr ds:[esi],al                ;  这里将会改变从keyfile中读取到的值,并将这个值显示为Cracker名
00401321  |.  46            |inc esi
00401322  |.  FEC3          |inc bl
00401324  |.  0105 F9204000 |add dword ptr ds:[0x4020F9],eax
0040132A  |.  3C 00         |cmp al,0x0
0040132C  |.  74 07         |je XCruehead.00401335
0040132E  |.  FEC1          |inc cl
00401330  |.  80FB 4F       |cmp bl,0x4F
00401333  |.^ 75 E6         \jnz XCruehead.0040131B
00401335  |>  890D 49214000 mov dword ptr ds:[0x402149],ecx
0040133B  \.  C3            retn

读取前14个字符的内容,并且对bl的值进行异或,异或后的结果保存回对应的位置,用来作为Cracker的name
前14个字符加起来的值之和会与0x12345678异或,异或后的结果将于剩下的4个字符比较是否相等,相等就显示正确的对话框。

要用16进制编辑器编辑!
keyfile:CRACKME3.KEY的内容:

20 20 20 20 20 20 20 20 20 20 20 20 20 20 D1 53 34 12

160 - 34 Cruehead.3相关推荐

  1. 160 - 33 Cruehead.1

    环境 windows xp sp3 工具 exeinfo pe ollydbg 查壳 无壳的汇编程序(OD载入的出来的) 测试 当name输入为数字时,会弹出两次错误框. OD载入搜字符串,发现有两个 ...

  2. 莫名其妙的主机名 VM_32_234_centos

    在腾讯服务器上部署的时候出现的莫名其妙的错误, 我在配置文件上都写 master, node1, 但是运行mapredure的时候的时候老是出现 Job job_1409546978133_0001 ...

  3. sphinx php mysql_Sphinx+MySQL+PHP 12亿DNS数据秒查

    最近得到一个接近12亿的全球ns节点的数据,本来想用来做一个全国通过dns反查域名然后进行全国范围的网站收集和扫描的,后来发现网站的数量不是很准确,加上一个人的精力和财力实在难以完成这样一个庞大的任务 ...

  4. Mysql对应的dul_Dul基本使用

    这几天朋友问我dul怎么用,抽时间给他做了个实验.其实网上已经有很多dul的使用方法,而且我也不推荐使用dul.odu这样的工具去恢复数据,这是体力活的. 而且现在最新版都是时间限制,好像是40多天, ...

  5. jarvis oj Web By Assassin

    LOCALHOST 套路题,构造headers中加上x-forwarded-for=127.0.0.1即可 PCTF{X_F0rw4rd_F0R_is_not_s3cuRe} PORT51 访问了页面 ...

  6. jarvis oj(web wp)

    api调用 这题是slim架构的xxe漏洞,看博客做题2333 https://www.leavesongs.com/PENETRATION/slim3-xxe.html simple injecti ...

  7. 国内ip地址 透明代理

    IP地址 模式 类型 查询 地区 更新时间 115.238.169.174:3128 Http 透明 whois 中国 2013-1-19 115.239.234.44:1080 Http 透明 wh ...

  8. jarvis oj Web By Assassin

    LOCALHOST 套路题,构造headers中加上x-forwarded-for=127.0.0.1即可 PCTF{X_F0rw4rd_F0R_is_not_s3cuRe} 1 PORT51 访问了 ...

  9. Jarvis OJ web WriteUp

    我要开始做Jarvis OJ上的题目啦!!!之前bugku上还剩下的几道题,之后也会再补上的,做出来之后,就会把思路写到博客里的.新手,有错的地方多多指教.(不是按顺序写的-我就先挑简单的做啦~~~) ...

最新文章

  1. 如果让你拥有100万粉丝,你会做什么
  2. VirtualCopy in WinCE6.0
  3. python两个切片合并_Python中numpy的布尔判断、合并、切片及一般函数,通用
  4. java htmlparser 使用教程_HtmlParser基础教程
  5. load dll failed java_【软件安装故障排除】安装完PyCharm,启动时弹出Failed to load JVM DLL\bin\server\jvm.dll解决方案...
  6. URL地址 长度超出限制问题解决
  7. matlab 误差修正模型,求问大神用R做VEC(误差修正)模型的程序包或者代码是什么啊?...
  8. 废粉盒在哪里_复印机提示“废粉盒满”“请及时更换废粉盒”
  9. 能连蓝牙键盘吗_300多的小键盘,颜值很能打,GANSS ALT71蓝牙双模机械键盘很香...
  10. 即兴演讲、怎么锻炼即兴演讲能力、一些即兴演讲的模板
  11. 【读书笔记】金字塔原理-构建金字塔的序言
  12. SpringBoot——自学笔记
  13. html5 在线设计,推荐十款非常优秀的 HTML5 在线设计工具
  14. 盘古石考核取证复现检材1(??)
  15. 输入年龄,判断年龄阶段
  16. TP5生成二维码教程
  17. 【数仓设计】宽表和窄表
  18. 【运维】- raid管理工具MegaCli以及storcli使用介绍
  19. 如何快速解决Github下载源码编译报错并顺利运行机器人等项目案例(Webots+ROS2)
  20. 武汉科技大学计算机专业强不强,武汉科技大学与湖北大学哪个实力更强?网友:没有可比性...

热门文章

  1. JSFinder—从js文件中寻找敏感接口和子域名
  2. JSP 插入到数据库的数据出现 “SQLServerException: 将截断字符串或二进制数据” 错误解决方案
  3. 数据可视化的基本原理——视觉通道
  4. [CSS] Scale on Hover with Transition
  5. 从一个帖子看 所谓“知乎” 的真实水平
  6. TMS320F28335——IO控制/定时计操作
  7. min-width:100%和max-width:100%的区别
  8. 01 辅助函数之加密函数
  9. 小程序如何传数组数据到vs后台中
  10. CF1080F Katya and Segments Sets