n1in 发表于 2021-7-27 09:34

160道crackme001

这道题的登陆方式有两种
一种是用户与密码,一种是注册码,搜了一下字符串,发现了try again字样,这是注册码错误的提醒,于是果断先试试注册码登录,
双击try again 可以看到call上面有一个jne 跳转到一个jmp的下面,卧槽,没想到这么简单,这一看就是一个判断注册码是否正确的一个if else
,直接将jne nop填充,直接就过了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAvonsoE-1627209379071)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210725165323583.png)]

芜湖,现在开始用户密码的登陆方式。

还是字符串搜索,双击try again

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBDB7ZUe-1627209379073)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210725171458449.png)]

还是熟悉的jnz加jmp判断,分析一下代码,可以看出,jnz通过上面的call来判断是否正确。是否正确的值会保存在eax中,和验证码的思路一样,nop填充就完事儿了。

关于如何找到关键点还有另外一种方法,根据messagebox指令寻找,首先弹出开局的messagebox指令,点击k窗口查看函数,找到地址接近的messagebox函数,邮件show call,下断点,然后分析一下代码,找到push ebp函数头下断点,点击check it从而使程序运行到这里, 好的,运行到这里以后,查看堆栈窗口,为什么要这样做呢?首先这个messagebox窗口是提示我们错误的窗口对吧,所以我们只需要找到调用这个函数的call就能方便找到我们的关键点了,如何找到调用的地址呢?call指令是首先将地址push’到堆栈中然后改变eip的值的,所以我们既然找到了messagebox函数,就能从堆栈窗口中找到call的地址,如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g45o8Ho4-1627209379074)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210725182142910.png)]

所以我们直接邮件反汇编窗口跟随,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lpYk4ez4-1627209379075)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20210725182216775.png)]

找到了。

现在开始寻找注册码和注册机

还是搜索字符串,找到我们的报错语句,双击进入,找到函数头push ebp,找函数头很关键,之前我就是一只不找函数头下断点导致自己一直跑不到自己想要跑到的位置。

下过断点以后,让程序跑到这里来,在找到的判断出jnz可以看出,jnz上面的call就是判断注册码是否正确的地方,而call上面面两行就是传进去的两个参数

成熟的美羊羊 发表于 2021-7-27 16:34

你的图是本地链接 , 可以试试这个工具 , 一键配置SMMS图床 , Typeora在按上他上面的配置就行了
https://www.bilibili.com/read/cv9267364?from=search

tianlan01 发表于 2021-7-27 10:18

谢谢分享

Cuu 发表于 2021-7-27 10:22

谢谢分享

miercy22 发表于 2021-7-27 11:12

谢谢分享

FlyingFire 发表于 2021-7-27 11:12

第一题适合新手练习。

longsheng2021 发表于 2021-7-27 12:18

谢谢分享

Tamluo 发表于 2021-7-27 18:27

真不错,学习了{:1_918:}

Stoneone 发表于 2021-7-27 18:54

谢谢分享

hswei 发表于 2021-7-27 19:49


感谢楼主分享,
页: [1] 2
查看完整版本: 160道crackme001