该提不简单

摘要:
没有语言。我想给你制造一些悬念。唉,/usr/bin/envpythonusername=“Hello”counter=0;Password=“Happy@”foriinusername:Password=密码+chrcounter=计数器+1打印运行后的结果是:Paste_Image.png获取hello用户的注册码:Happy@!
无语了,想给你们制造点悬念都没有了,哎!直接去做题吧
解题链接: http://ctf5.shiyanbar.com/crack/3/
关键字:
 破解 逆向 调试 
破解[crackme1.zip](http://ctf5.shiyanbar.com/crack/3/CrackMe1.zip)压缩包的程序 
要求:请找出用户名为hello的注册码

下载并解压题目提供程序
尝试运行程序 :

该提不简单第1张
Paste_Image.png
该提不简单第2张
Paste_Image.png

发现输入错误的时候会有一个 AlertDialog 弹出 , 提示 "密钥无效"

首先使用 bash 的 file 工具查看一下文件类型 :

该提不简单第3张
Paste_Image.png
CrackMe1.exe: PE32 executable (GUI) Intel 80386, for MS Windows

打开 IDA , 载入该程序 , 由于我们之前运行该程序的时候注意到了关键字符串 "密钥无效"
这时可以通过搜索定位 "密钥无效"

该提不简单第4张
Paste_Image.png

双击后面的注释跳转到 图形视图

该提不简单第5张
Paste_Image.png

这里调用了这个函数 : sub_4011D0
当返回值不为 0 的时候 , 就跳转到 密钥无效 的分支
我们继续查看这个函数 : sub_4011D0
直接 f5 反编译为 C代码

该提不简单第6张
Paste_Image.png
该提不简单第7张
Paste_Image.png

通过分析可以知道 , 这段代码会将用户输入的用户名的每个字符遍历一遍
把每个字符的序号(从 0 开始算)与这个字符的ASCII码的平方相乘 , 然后整体再加上序号 , 得到的和继续对 0x42 求余 , 最后将结果加上 33 , 然后再转为ASCII码
然后再将上述结果连接在字符串 'Happy@' 之后构成注册码

分析清楚了思路 , 然后就是写注册机

#!/usr/bin/env python

username = "Hello"
counter = 0;
password = "Happy@"
for i in username:
    password = password + chr((counter + counter * ord(i) * ord(i)) % 0x42 + 33)
    counter = counter + 1
print(password)

运行后结果为 :

该提不简单第8张
Paste_Image.png

得到 hello 用户的注册码为 : Happy@!GA0U

该提不简单第9张
Paste_Image.png


作者:王一航
链接:http://www.jianshu.com/p/6e7396cdb0f1
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

免责声明:文章转载自《该提不简单》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇浏览器缓存机制表(异同)实验吧flag整理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

BUUCTF Misc (三)

[BJDCTF 2nd]最简单的misc-y1ng 1、zip伪加密2、补全png文件头3、hex转ascii。 [BJDCTF 2nd]A_Beautiful_Picture 1、在linux下打不开,高被改了。 [BJDCTF 2nd]小姐姐-y1ng 1、jpg图片,HxD搜索关键字BJD。或者strings... [BJDCTF 2nd]Real_E...

Mac下Android绘制点9格式png以及解决IllegalArgumentException: Unknown image type 0报错

在Mac下的AndroidStudio中,右键png图片选择“create 9-patch-file”时会报错:IllegalArgumentException: Unknown image type 0,此时点9格式的图片并没有创建出来。 怎么办呢?很简单,自己手动创建就好了。 复制要制作点9格式的图片到目标文件夹,并且命名以 “图片名.9.png”...

Android自用 加载png图片时出错!

在/res/drawable下面将一个.ico图片直接重命名加载,报错! “ERROR: Failure processing PNG imageD:\workspace\2DCodePolling\res\drawable\launcher_icon.png” 错误原因:图片的格式有问题。比如说,你将一张jpg的图片重命名成.png的格式,在放 到资源文...

cocos2d-x中CCLabelAtlas的小图片拼接

美术在设计UI时,很多界面可能使用了数字图片来展示一些效果,比如CD或者 x1/x2等,一般她们都会切成很多单张小的图片,类似这样 cocox2d-x中CCLabelAtlas支持直接从图片中读取文字,但先要将上面的图片合并成到一张图片中。 CCLabelAtlas *pLabelAtlas = CCLabelAtlas::labelWithSt...

提取 iPhone 应用中 png 图片的方法

本文转自http://summic.com/post/53/ Apple 对 iPhone 应用程序中的 png 图片进行了特殊的处理,在 png 文件头之后加了一个非标准的 CgBI 数据段,IDAT 段图像数据也没有传统的压缩数据头和尾,并且红色和蓝色是反的,这样就无法在 Mac 或 Windows 下不能正常使用了。 国外开发者已经搞定了这一问题,先下...

nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG

需求描述,由于工作的需要,需要将原本用于1280 720的网页改为1920 1080的网页(电视端页面)。需求可以拆分为两部分,代码部分的修改以及图片的修改。在代码部分,需要将所有位置以及大小相关的值乘以1.5,图片的尺寸也要放大1.5倍。首先使用nodejs遍历当前的文件夹: // 遍历所有的文件 var fs = require("fs") var...