niucaidi 发表于 2021-7-4 01:28

第一次分析一个CrackMe

本帖最后由 niucaidi 于 2021-7-4 01:44 编辑

## 记,第一次破解
### 目前学习的教程来自滴水海东,视频来源为B站
- 这是教程第六集的作业,要求分析一个海东老师提供的CRACKME
<div align=center>



- 视频里说,因为有MessageBox,所以第一步可以下Windows API断点,命令是`bp MessageBoxA `
    <div align=center>

- 接下来点击od的运行,让程序跑起来,再点击Help-Register进入注册界面
<div align=center>

    <div align=center>

- 随便输入注册信息,此时程序会在断点处停下,注意ESP,其当前值代表Call调用前压入的返回地址
    <div align=center>

- 右键点击该地址,选择`在反汇编窗口中跟随`,在跳转到的地址下断,并且此处注释部分可以看到很明显的提示
    <div align=center>



- 再次让程序跑起来,停在断点处,我认为这一部分应该是一个函数,因为头部有retn,尾部也有retn,我觉得很像一个函数的样子,这只是个人浅薄的见解,并且上方有明显的提示,如此一来我们又可以将头部`retn`的下一行下断,令程序运行到这个位置,并且观察此时的ESP,认为这就是Call调用前的返回地址,右键反汇编跟随,来到下图处
    <div align=center>

- 经验证,此处就是关键跳转,将jz修改为jmp即可
- 其实这个软件如果用纯数字输入注册信息还会再跳出一个失败信息,用同样的思路也可以将其解决
- 其实更简单的是搜索字符串,毕竟是个很简单的CrackMe,不过这样分析软件能让逆向基础更加扎实,我十分赞同海东老师的说法

xman100 发表于 2021-7-8 20:20

另外一个提示信息可以把这几个nop掉
0040122D      90            nop
0040122E      90            nop
0040122F      90            nop
00401230      90            nop
00401231      90            nop

niucaidi 发表于 2021-7-8 20:22

xman100 发表于 2021-7-8 20:20
另外一个提示信息可以把这几个nop掉
0040122D      90            nop
0040122E      90            nop
...

nop大法好{:1_921:}

空而上签 发表于 2021-7-4 12:17

感谢楼主分享

fazeroquan 发表于 2021-7-4 17:11

学习学习,!!

bing90740 发表于 2021-7-4 20:31

厉害,学习了。。。。

lyl610abc 发表于 2021-7-4 22:04

萌新路过支持一下{:301_997:}

ribonmg 发表于 2021-7-5 11:01

感谢分享,学习了一波,谢谢楼主

Abin011101 发表于 2021-7-6 17:44

萌新路过,学习一下

anlovedong 发表于 2021-7-6 17:48

学习了,,谢谢分享

Yellow_Man 发表于 2021-7-6 17:52

感谢分享
页: [1] 2
查看完整版本: 第一次分析一个CrackMe