逆向分析CrackMe系列——CrackMe001

之前学的逆向都忘干净了,最近又重新学一学,这次从CrackMe入手。
本系列的CrackMe资源均来自我爱破解网.

1. 运行程序,随便输入序列号后弹窗:


2. 进入到主窗口程序后,下断点:bp MeaasgeBoxA 或者 MessageBoxW 因为不知道调用的是哪一个函数(在主窗口下新窗口的断点是为了在进行错误提示的时候进行暂停)

3. 找到断下的位置:

4. 然后进行回溯ctrl +F9,发现并不是主窗口程序,继续回溯:

5. 继续回溯ctrl+F9 :
6. 找到疑似主程:

7. 进行分析和记录,该部分的入口为:0042F998
找到熟悉的字符串 “Try Again!” “ Sorry, the serial is incorrect! ” 字符串,进行前面的数据分析,发现新的字符串 “Congratz !!” “Good job dude =)” 疑似正确输入序列号后的字符串,同时发现其中的 jnz short 跳转是指向错误处理的部分,也就是说当序列号检验正确时将会继续往下,执行序列号正确的处理函数(弹窗);当序列号错误的时候会执行错误的处理函数弹窗(弹窗)。既然如此,我们直接对 jnz 的语句进行修改,直接改成 nop 即可,让程序直接执行序列号正确时的处理函数:


8. 但是执行后发现报错:


9. 分析,因为原来的汇编代码长度是4个字节,而nop只有2个字节,所以会出现出错误,所以此处需要用两个nop进行替换

10. 继续执行,成功:

11. 前一部分的任务结束,接下来进行整个程序的序列号生成函数查找,分析:既然在jnz 进行的跳转,说明在jnz前面已经进行了序列号的检查,那么我们继续往回看,jnz的前面地址0x0042FAFE 处正好有一个函数调用 call 004039FC,我们猜测它就是序列号检查的函数:

12. 由于该函数前面还有很多的函数调用,我们需要进行单步进行分析;在前面0x42F5E处又发现同样的序列号错误时的处理函数:

13. 分析,在这个函数处理前有一个 jge short的跳转,其中跳转的地址是这个函数处理结束的下一条指令,也就是说前面进行了某种判断,如果满足条件就继续往下进行,不满足条件就执行序列号错误时的处理函数。jge前面拿eax的值和4进行比较来判定是否跳转,cmp 前面正好有一个call 函数调用,而call 函数调用的返回值一般都是存放在eax中的,也就是说这个函数很可能是序列号的某种判断函数。

14. 我们进入该函数进行分析:

15. 发现该函数为一个简单的长度计算函数,那么此处的判断就是,先对输入的数据进行长度检查,大于4的往下进行,小于4的就执行错误的弹窗;但此时我们并不知道是对用户名还是序列号的检查。

16. 我们在此处进行下断,然后进行数据查看,call 00406930 前正好将eax进行了赋值,call 调用前需要参数传递,极可能是用eax进行的传递,对eax进行内存查找,发现正是输入的用户名:



17. 所以,此处的逻辑是先对用户名进行检查。我们再继续往下进行分析,按正常的逻辑来讲,用户名检查完后就应该是序列号检查了,因为用户名的检查jge short 跳转的地址是0042FA79, 那么我们从0042FA79一直分析到刚刚的序列号检查函数的地址0x0042FAFE 处。
18. 进行单步执行,同时进行堆栈的查看和分析,相关结果如下:

其中堆栈输入如下


19. 整个序列号计算部分的逻辑如下:

1) 取用户名的第一个字符进行乘法计算,计算的结果乘以2后存放于地 址 [431750] 中,此处为0x19F2 数值为“6642”
2) 然后进行字符串的拼接,完成序列号的生成,此部分是在序列号生成函数 call 004039AC 处完成。其中前面的四个push 均为它的参数传递,应该是一个简单的字符串拼接,生成的序列号存放在局部变量4中 (为 “CW-6642-CRACKED”)。

20. 其中的 call 00403708 函数不太清楚到底有什么实质性的功能,其中有一个功能就是对局部变量进行赋值,分别赋值字符串“CW”和“CRACKED”;另外函数 call 00406718 也不太清楚有什么作用,望哪位大佬解释一下。

21. 程序的另一个部分采用同样分析方式,采用了序列号同样的逻辑(口令为 “Hello Dude!” ),如下:

逆向分析CrackMe系列——CrackMe001相关推荐

  1. 逆向分析CrackMe系列——CrackMe004之注册码算法分析

    逆向分析CrackMe系列--CrackMe004注册码算法分析 本文内容承接前面的工作,记录了自己每一步的分析过程和思路,由于内容较长,故单独写一篇. (本系列的CrackMe资源均来自我爱破解网) ...

  2. 逆向分析入门实战(二)

    上次我们对主函数分析完成了,逆向入门分析实战(一)那么这次我们对子函数IsAlreadyRun进行分析. C语言代码 IsAlreadyRun函数的C语言代码如下图所示: 下面对其汇编代码进行分析: ...

  3. 2019年末逆向复习系列之Boss直聘Cookie加密字段__zp_stoken__逆向分析

    郑重声明:本项目的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关. 这篇文章是公众号<云爬虫技术研究笔记>的<2019 ...

  4. 2019年末逆向复习系列之今日头条WEB端_signature、as、cp参数逆向分析

    郑重声明:本项目的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关. 这篇文章是公众号<云爬虫技术研究笔记>的<2019 ...

  5. 2019年末逆向复习系列之努比亚Cookie生成逆向分析

    郑重声明:本项目的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关. 这篇文章是<2019年末逆向复习系列>的第二篇:< ...

  6. 2019年末逆向复习系列之淘宝M站Sign参数逆向分析

    郑重声明:本项目的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关. 这篇文章是<2019年末逆向复习系列>的第一篇:< ...

  7. 逆向分析——破解一个CrackMe

    点赞后看,养成习惯 喜欢的话 可以点个关注哟 你们的点赞支持对博主们来说很重要哦 !!! 为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 00 前情提要 01 题目描述 02 破解步骤 00 前情 ...

  8. [安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断

    前文作者讲解了OllyDbg和在线沙箱的逆向分析过程,分享了恶意软件如何通过宏脚本发送勒索信息或密码至用户邮箱.这篇文件将带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原,基础性文章,希 ...

  9. 第一课 逆向分析基础知识

    看雪软件安全论坛 > 初学者园地 > 『伴你成长』 > 『资料导航』 加密与解密 解密分析入门基础知识 欢迎您,youcou 您上次访问的时间是: 2009-09-23,23:53 ...

  10. 【世界上最优秀的逆向分析工具】IDA Pro6.1绿色版

    [世界上最优秀的逆向分析工具]IDA Pro6.1绿色版 让编程改变世界 Change the world by program 世界上最优秀的静态逆向工具没有之一 [caption id=" ...

最新文章

  1. 线段树维护区间最大值+第 45 届(ICPC)亚洲区域赛(昆明)L题Simone and Graph Coloring
  2. airtest web 录制滑块_Airtest之web自动化(一)
  3. 线程 sleep 取消_C/C++ 多线程机制
  4. java中String对象作为参数传递问题
  5. kali dvwa php mysql,kali linux 2.0下搭建DVWA渗透测试演练平台
  6. select下拉框option的样式修改
  7. STM32零碎问题记录
  8. 「Leetcode」206.反转链表:听说过两天反转链表又写不出来了?
  9. 把echarts导出成pdf
  10. java applet 教程_教你构建第一个Java Applet程序
  11. 运维工程师的主要工作职责
  12. 基金从业资格考试总结
  13. 如何计算变量或数据类型所占内存空间的大小
  14. 【ug903】Xilinx XDC约束的序(Order)
  15. Apache CXF框架简介
  16. 检索匹配的利器:正则表达式
  17. Python中metrics的用法
  18. 研究生考试复习有哪些基本的思路或准备?
  19. 单例/单体模式(Singleton)
  20. Vijos CoVH之柯南开锁 (二分图)

热门文章

  1. vue中的阿里巴巴矢量图标使用
  2. android项目中如何导入model
  3. 图片|视频|音频文件扩展名(后缀)
  4. 低代码平台开发 python_低组词_低的多音字组词,低是多音字吗,低组词有哪些
  5. 汉字查拼音微信小程序项目源码
  6. java同构数_统计同构数关键算法
  7. 动手学深度学习之数据预处理
  8. 一加6android9玩飞车掉,解锁新速度:一加6T深度评测
  9. Vivado下载bit文件正常不能在线抓取波形
  10. 论文写作--学习所得