【破文标题】crackme_zapline 分析
【破文作者】CloAk
【作者邮箱】@qq.com
【作者主页】
【破解工具】OD,...
【破解平台】Windows
------------------------------------------------------------------------
【破解过程】//zaplineCreackme 分析 // 首先, 程序没有按钮 目测使用 bp GetWindowText // 早先已经调试过, 但是因为没仔细看, 研究了半天 // 首先下 bp GetWindowTextW 断下返回来到下面, 00EBCA12 |. PUSH ESI ; /Count = 0x8
00EBCA13 |. PUSH EAX ; |Buffer =
00EBCA14 |. 8B03 MOV EAX, DWORD PTR DS:[EBX] ; |
00EBCA16 |. PUSH EAX ; |hWnd =
00EBCA17 |. FF15 E002ED00 CALL DWORD PTR DS:[<&USER32.GetWindowTex>; \GetWindowTextW
00EBCA1D |. 8BF0 MOV ESI, EAX
00EBCA1F |. 83FE FF CMP ESI, -0x1
00EBCA22 |. JNZ SHORT 00EBCA37 // 上面的地方没有上来, 走到retn 来到下面 00EBCA60 /$ PUSH EBX
00EBCA61 |. PUSH ESI
00EBCA62 |. 8BF1 MOV ESI, ECX
00EBCA64 |. PUSH EDI
00EBCA65 |. 8DBE LEA EDI, DWORD PTR DS:[ESI+0x378]
00EBCA6B |. PUSH EDI
00EBCA6C |. 8D8E LEA ECX, DWORD PTR DS:[ESI+0x384]
00EBCA72 |. E8 59FFFFFF CALL 00EBC9D0 ; // 读取注册名
00EBCA77 |. 8D86 7C030000 LEA EAX, DWORD PTR DS:[ESI+0x37C] ; ** 来到这里
00EBCA7D |. PUSH EAX
00EBCA7E |. 8D8E LEA ECX, DWORD PTR DS:[ESI+0x388]
00EBCA84 |. E8 47FFFFFF CALL 00EBC9D0 ; // 读取代码
00EBCA89 |. 8D9E LEA EBX, DWORD PTR DS:[ESI+0x380]
00EBCA8F |. PUSH EBX ; // 这两个参数是一样的 所以先不管了
00EBCA90 |. PUSH EDI ; // 继续走过这个call 这个里边你可以自己跟一下
00EBCA91 |. E8 1AFDFFFF CALL 00EBC7B0 ; // compare?
00EBCA96 |. 83C4 ADD ESP, 0x8
00EBCA99 |. 84C0 TEST AL, AL
00EBCA9B |. JE SHORT 00EBCAD0
00EBCA9D |. 8B4E MOV ECX, DWORD PTR DS:[ESI+0x4]
00EBCAA0 |. 6A PUSH 0x35 ; /TimerID = (.)
00EBCAA2 |. PUSH ECX ; |hWnd = NULL
00EBCAA3 |. FF15 3003ED00 CALL DWORD PTR DS:[<&USER32.KillTimer>] ; \KillTimer
00EBCAA9 |. 8B56 MOV EDX, DWORD PTR DS:[ESI+0x4]
00EBCAAC |. 6A PUSH 0x36 ; /TimerID = (.)
00EBCAAE |. PUSH EDX ; |hWnd = 009D0000
00EBCAAF |. FF15 3003ED00 CALL DWORD PTR DS:[<&USER32.KillTimer>] ; \KillTimer
00EBCAB5 |. PUSH EDI
00EBCAB6 |. 8BCB MOV ECX, EBX
00EBCAB8 |. E8 83EDFEFF CALL 00EAB840
00EBCABD |. 8B46 MOV EAX, DWORD PTR DS:[ESI+0x4]
00EBCAC0 |. 6A PUSH 0x0 ; /Timerproc = NULL
00EBCAC2 |. C8000000 PUSH 0xC8 ; |Timeout = . ms
00EBCAC7 |. 6A PUSH 0x34 ; |TimerID = (.)
00EBCAC9 |. PUSH EAX ; |hWnd = NULL
00EBCACA |. FF15 F002ED00 CALL DWORD PTR DS:[<&USER32.SetTimer>] ; \SetTimer
00EBCAD0 |> 5F POP EDI ; 009DF938
00EBCAD1 |. 5E POP ESI ; 009DF938
00EBCAD2 |. 5B POP EBX ; 009DF938
00EBCAD3 \. C3 RETN // 走过retn来到下面这里
00EBCAE0 /$ PUSH EBX
00EBCAE1 |. PUSH ESI
00EBCAE2 |. PUSH EDI
00EBCAE3 |. 8BF1 MOV ESI, ECX
00EBCAE5 |. E8 76FFFFFF CALL 00EBCA60 ; ** 在这里
00EBCAEA |. 8B96 MOV EDX, DWORD PTR DS:[ESI+0x378] ; 读取注册名
00EBCAF0 |. 8B4A F4 MOV ECX, DWORD PTR DS:[EDX-0xC] ; 长度
00EBCAF3 |. 33DB XOR EBX, EBX
00EBCAF5 |. 33C0 XOR EAX, EAX
00EBCAF7 |. 85C9 TEST ECX, ECX
00EBCAF9 |. 7E 1A JLE SHORT 00EBCB15
00EBCAFB |. EB JMP SHORT 00EBCB00
00EBCAFD | 8D49 LEA ECX, DWORD PTR DS:[ECX]
00EBCB00 |> 85C0 /TEST EAX, EAX
00EBCB02 |. |JS SHORT 00EBCB48
00EBCB04 |. 3BC1 |CMP EAX, ECX
00EBCB06 |. 7F |JG SHORT 00EBCB48
00EBCB08 |. 0FB73A |MOVZX EDI, WORD PTR DS:[EDX]
00EBCB0B |. |INC EAX
00EBCB0C |. 03DF |ADD EBX, EDI
00EBCB0E |. 83C2 |ADD EDX, 0x2
00EBCB11 |. 3BC1 |CMP EAX, ECX
00EBCB13 |.^ 7C EB \JL SHORT 00EBCB00 ; 累加用户名ascii码
00EBCB15 |> 8BB6 7C030000 MOV ESI, DWORD PTR DS:[ESI+0x37C]
00EBCB1B |. 8B4E F4 MOV ECX, DWORD PTR DS:[ESI-0xC]
00EBCB1E |. 33FF XOR EDI, EDI
00EBCB20 |. 33C0 XOR EAX, EAX
00EBCB22 |. 85C9 TEST ECX, ECX
00EBCB24 |. 7E JLE SHORT 00EBCB3D
00EBCB26 |. 8BD6 MOV EDX, ESI
00EBCB28 |> 85C0 /TEST EAX, EAX
00EBCB2A |. 1C |JS SHORT 00EBCB48
00EBCB2C |. 3BC1 |CMP EAX, ECX
00EBCB2E |. 7F |JG SHORT 00EBCB48
00EBCB30 |. 0FB732 |MOVZX ESI, WORD PTR DS:[EDX]
00EBCB33 |. |INC EAX
00EBCB34 |. 03FE |ADD EDI, ESI
00EBCB36 |. 83C2 |ADD EDX, 0x2
00EBCB39 |. 3BC1 |CMP EAX, ECX
00EBCB3B |.^ 7C EB \JL SHORT 00EBCB28 ; 累加注册码ascii码
00EBCB3D |> 33C0 XOR EAX, EAX
00EBCB3F |. 3BDF CMP EBX, EDI ; 比较累加的数值对不对
00EBCB41 |. 5F POP EDI ; 009DF938
00EBCB42 |. 5E POP ESI ; 009DF938
00EBCB43 0F94C0 SETE AL // 这里可以改 setnt
00EBCB46 |. 5B POP EBX ; 009DF938
00EBCB47 |. C3 RETN // 然后继续走过这个call 00EBCCCE |. E8 0DFEFFFF CALL 00EBCAE0
00EBCCD3 |. 85C0 TEST EAX, EAX ; ** 来到这里
00EBCCD5 4D JE SHORT 00EBCD24
00EBCCD7 |. 8B46 MOV EAX, DWORD PTR DS:[ESI+0x4]
00EBCCDA |. 6A PUSH 0x34 ; /TimerID = (.)
00EBCCDC |. PUSH EAX ; |hWnd =
00EBCCDD |. FF15 3003ED00 CALL DWORD PTR DS:[<&USER32.KillTimer>] ; \KillTimer
00EBCCE3 |. 8B4E MOV ECX, DWORD PTR DS:[ESI+0x4]
00EBCCE6 |. 6A PUSH 0x0 ; /Timerproc = NULL
00EBCCE8 |. C8000000 PUSH 0xC8 ; |Timeout = . ms
00EBCCED |. 6A PUSH 0x35 ; |TimerID = (.)
00EBCCEF |. PUSH ECX ; |hWnd = 009DFAD8
00EBCCF0 |. FF15 F002ED00 CALL DWORD PTR DS:[<&USER32.SetTimer>] ; \SetTimer
00EBCCF6 |. 5E POP ESI ; // 上面开始了时钟看到下面的0x35
00EBCCF7 |. 5D POP EBP ; // 果断在 0xEBCCFB下断
00EBCCF8 |. C2 RETN 0x4
00EBCCFB |> 83F8 CMP EAX, 0x35
00EBCCFE JNZ SHORT 00EBCD24
00EBCD00 |. E8 5BFEFFFF CALL 00EBCB60 ; // 又是比较F7
00EBCD05 |. 85C0 TEST EAX, EAX
00EBCD07 |. 1B JE SHORT 00EBCD24
00EBCD09 |. 8B56 MOV EDX, DWORD PTR DS:[ESI+0x4]
00EBCD0C |. 6A PUSH 0x35 ; /TimerID = (.)
00EBCD0E |. PUSH EDX ; |hWnd = ('吾爱破解2012CM大赛作品',class='ATL:00ED82E8')
00EBCD0F |. FF15 3003ED00 CALL DWORD PTR DS:[<&USER32.KillTimer>] ; \KillTimer
00EBCD15 |. 6A PUSH 0x1
00EBCD17 |. EE030000 PUSH 0x3EE
00EBCD1C |. 8D4E LEA ECX, DWORD PTR DS:[ESI+0x50]
00EBCD1F |. E8 BCFEFFFF CALL 00EBCBE0 ; 成功标志
00EBCD24 |> 5E POP ESI ; 009DFAD8
00EBCD25 |. 5D POP EBP ; 009DFAD8
00EBCD26 \. C2 RETN 0x4 // 来到0x00EBCD00, 看到类似刚才的代码我有些被弄混了!!
00EBCB79 |. /7E 1A JLE SHORT 00EBCB95
00EBCB7B |. |EB JMP SHORT 00EBCB80
00EBCB7D | |8D49 LEA ECX, DWORD PTR DS:[ECX]
00EBCB80 |> |85C0 /TEST EAX, EAX
00EBCB82 |. | |JS SHORT 00EBCBCD
00EBCB84 |. |3BC1 |CMP EAX, ECX
00EBCB86 |. |7F |JG SHORT 00EBCBCD
00EBCB88 |. |0FB73A |MOVZX EDI, WORD PTR DS:[EDX]
00EBCB8B |. | |INC EAX
00EBCB8C |. |03DF |ADD EBX, EDI
00EBCB8E |. |83C2 |ADD EDX, 0x2
00EBCB91 |. |3BC1 |CMP EAX, ECX
00EBCB93 |.^|7C EB \JL SHORT 00EBCB80
00EBCB95 |> \8BB6 7C030000 MOV ESI, DWORD PTR DS:[ESI+0x37C]
00EBCB9B |. 8B4E F4 MOV ECX, DWORD PTR DS:[ESI-0xC]
00EBCB9E |. 33FF XOR EDI, EDI
00EBCBA0 |. 33C0 XOR EAX, EAX
00EBCBA2 |. 85C9 TEST ECX, ECX
00EBCBA4 |. 7E JLE SHORT 00EBCBBD
00EBCBA6 |. 8BD6 MOV EDX, ESI
00EBCBA8 |> 85C0 /TEST EAX, EAX
00EBCBAA |. |JS SHORT 00EBCBCD
00EBCBAC |. 3BC1 |CMP EAX, ECX
00EBCBAE |. 7F 1D |JG SHORT 00EBCBCD
00EBCBB0 |. 0FB732 |MOVZX ESI, WORD PTR DS:[EDX]
00EBCBB3 |. |INC EAX
00EBCBB4 |. 03FE |ADD EDI, ESI
00EBCBB6 |. 83C2 |ADD EDX, 0x2
00EBCBB9 |. 3BC1 |CMP EAX, ECX
00EBCBBB |.^ 7C EB \JL SHORT 00EBCBA8
00EBCBBD |> \8D045B LEA EAX, DWORD PTR DS:[EBX+EBX*] ; **注册码累加的值 *
00EBCBC0 |. 33C9 XOR ECX, ECX
00EBCBC2 |. 3BC7 CMP EAX, EDI
00EBCBC4 |. 0F94C1 SETE CL
00EBCBC7 |. 5F POP EDI ; crackme_.00EBCD05
00EBCBC8 |. 5E POP ESI ; crackme_.00EBCD05
00EBCBC9 |. 5B POP EBX ; crackme_.00EBCD05
00EBCBCA |. 8BC1 MOV EAX, ECX
00EBCBCC |. C3 RETN // 当上面的判断比较成功的话 即出现注册成功, 但是因为自己没细心看, 浪费了很多时间 ------------------------------------------------------------------------
【破解总结】参考sdzzb大神的破文
http://www.52pojie.cn/forum.php?mod=viewthread&tid=146265 // 总结
对每一个retn后的数据需要仔细观察! , 特别是多层嵌套的call , 不要弄混了!
------------------------------------------------------------------------
【版权声明】

crackme_zapline分析的更多相关文章

  1. alias导致virtualenv异常的分析和解法

    title: alias导致virtualenv异常的分析和解法 toc: true comments: true date: 2016-06-27 23:40:56 tags: [OS X, ZSH ...

  2. 火焰图分析openresty性能瓶颈

    注:本文操作基于CentOS 系统 准备工作 用wget从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包 ...

  3. 一起来玩echarts系列(一)------箱线图的分析与绘制

    一.箱线图 Box-plot 箱线图一般被用作显示数据分散情况.具体是计算一组数据的中位数.25%分位数.75%分位数.上边界.下边界,来将数据从大到小排列,直观展示数据整体的分布情况. 大部分正常数 ...

  4. 应用工具 .NET Portability Analyzer 分析迁移dotnet core

    大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...

  5. UWP中新加的数据绑定方式x:Bind分析总结

    UWP中新加的数据绑定方式x:Bind分析总结 0x00 UWP中的x:Bind 由之前有过WPF开发经验,所以在学习UWP的时候直接省略了XAML.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...

  6. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...

  7. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  8. ABP源码分析一:整体项目结构及目录

    ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module ...

  9. HashMap与TreeMap源码分析

    1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...

随机推荐

  1. php 处理高并发的思路

    1.nginx 服务器,提高网站服务器并发性能 2.控制大文件的下载,减少CPU的消耗. 3.对于sql查询做缓存. 4.静态页面文件缓存. 5.CND缓存静态文件, 6.反向代理到多个服务器,用来分 ...

  2. 测试URL有效性

    方法一: #禁用滚动条 $ProgressPreference='silentlycontinue' Invoke-WebRequest "www.163.com" -UseBas ...

  3. BW性能优化

    少写例程,减少ABAP处理时间,例程要有效率减少查询数据库表先加载主数据,然后加载事务数据创建聚集进行数据压缩M:N关系的数据不能放到一个维度减少计算指标数量,提高上载效率并行加载建模型时如果有日的分 ...

  4. HDU 4819 Mosaic 二维线段树

    Mosaic Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  5. 安卓高手之路之 ClassLoader

    我不喜欢那些泛泛而谈的去讲那些形而上学的道理,更不喜欢记那些既定的东西.靠记忆去弥补思考的人,容易陷入人云亦云的境地,最后必定被记忆所围困,而最终消亡的是创造力.希望这个高手之路系列能够记录我学习安卓 ...

  6. 关于Android与pc通信时中文乱码的分析和解决

    初步实现了Android与pc服务器的通信之后,又碰到了传说中令人头疼不已的中文乱码问题.既然出现了乱码,那么原因自然是协议不通了.我们知道eclipse中默认的编码标准是GBK,而安卓程序开发所默认 ...

  7. cocos2d粒子效果

    第9章 粒子效果 游戏开发者通常使用粒子系统来制作视觉特效.粒子系统能够发射大量细小的粒子并对他们进行渲染,而且效率要远高于渲染同样数目的精灵.粒子系统可以模拟下雨.火焰.雪.爆炸.蒸气拖尾以及其他多 ...

  8. debian下Vnc

    1 VNC(Virtual Network Computing,虚拟网络计算)最早是一套由英国剑桥大学AT&T实验 室在2002年开发的轻量型的远程控制计算机软件,其采用了 GPL 授权条款, ...

  9. ASP.NET 之 检测到在集成的托管管道模式下不适用的ASP.NET设置

    将ASP.NET程序从IIS6移植到IIS7后,调试运行可能提示以下错误: HTTP 错误 500.23 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP. ...

  10. 关于 未能加载文件或程序集“MySql.Web, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”或它的某一个依赖项。系统找不到指定的文件。

    我这个项目是MVC4的,有两个版本,第一个版本直接运行没什么问题,但是跑第二个版本的时候就给我提示这个错误.好吧,百度果然是万能的.下边是解决方案. 1.找到 C:\Windows\Microsoft ...