吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7078|回复: 26
收起左侧

[CTF] “百度杯”十一月场 CrackMe01

[复制链接]
buzhifou01 发表于 2019-12-1 19:59
本帖最后由 buzhifou01 于 2019-12-1 20:00 编辑

0x1破解详解
1查壳,发现无壳

image.png

2.首先用OD打开CrackMe01.exe发现终止,接着装反调式插件打开,运行的时候发现,需要输入flag,用IDA打开
发现GetWindowTextW函数,该函数取文本框中内容。


2345截图20191201181535.png


2345截图20191201181914.png


3.在OD中对GetWindowTextW下断,接着f9,由于GetWindowTextW在多个地方调用,因此需要f9多次。在文本框中输入字符,输入123456789,点击click,发现没反应。


image.png


4.接着我们在ida的import窗口中查找突破函数,找到下面几个有价值的函数:
PostMessageW:用于将一条消息放入到消息队列中


SendMessageW:这两个函数将指定的消息发送到一个或多个窗口


GetMessageW:从调用线程的消息队列里取得一个消息并将其放于指定的结构


DefWindowProcW:为应用程序没有处理的任何窗口消息提供缺省的处理
5.在ida中查看调用PostMessageW的代码块,可以看到PostMessage函数各个参数的值,lParam是输入的个数,wParam是输入的内容。hWnd是接收消息的窗口句柄。

2345截图20191201185056.png


2345截图20191201190233.png


2345截图20191201190254.png

6.双击hWnd,查看引用情况,选中第二个进入,发现WNDCLASSEX 中最重要的成员lpfnWndProc右边有个sub_4027f0函数,进入这个函数


temp.png

7.看到下面有一个非常重要的消息处理函数DefWindowProcW,往下看看到一个算法代码,一共两个循环,第一个循环累加输入字符串中每个字符的ASCII值+2*数组下标的值,第二个循环是让chText这个数组中的每个字符进行异或处理。


temp.png

8.在往下可以看到一个if语句从判断条件可以看出计算后的v6为0x4B6。


2345截图20191201192831.png
9,接着可以看到以下代码,其中有函数DrawTextW,后面有把数组chText做为参数,那么这里就跟flag有着联系,当输入的flag正确时,会输出这个flag


temp.png


10.所以得到flag的代码如下:
[Python] 纯文本查看 复制代码
chText=[0x4F0,0x4DA,0x4D7,0x4D1,0x48c,0x4ff,0x4f5,0x4fe,0x4e3,0x4f8,0x4e7,0x4ff,0x4e3,0x4e9,0x4f0,0x4f3,0x485,0x480,0x484,0x4F2,0x4F4,0x4F3]

for i in range(0,22):
  print chr(chText[i]^0x4B6)



flag{ICHUNQIU_FE362DBE}

题目下载:链接:https://pan.baidu.com/s/1ao6KIX-L3d36T9lrJ3z6LA
提取码:55ay


免费评分

参与人数 11威望 +1 吾爱币 +18 热心值 +11 收起 理由
钢铁侠_123 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
backin886 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
setycyas + 1 + 1 热心回复!
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
smile5 + 1 热心回复!
无情哥 + 1 + 1 谢谢@Thanks!
play.1122 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
CrazyNut + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yingting + 1 + 1 谢谢@Thanks!
飞畅 + 1 + 1 谢谢@Thanks!
NanKeYM + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Ginobili 发表于 2019-12-2 21:29
hbkccccc 发表于 2019-12-1 21:36
感谢楼主  学习了

请问 if语句从判断条件可以看出计算后的v6为0x4B6 如何算出的

写个脚本运行一下逻辑算出来的吧
hbkccccc 发表于 2019-12-1 21:36
本帖最后由 hbkccccc 于 2019-12-1 21:46 编辑

感谢楼主  学习了

请问 if语句从判断条件可以看出计算后的v6为0x4B6 如何算出的
幻狐boke 发表于 2019-12-1 20:14
果果没有糖葫芦 发表于 2019-12-1 20:14
感谢楼主  学习了
NanKeYM 发表于 2019-12-1 20:19
打ctf的,前来进行学习
头像被屏蔽
cayne 发表于 2019-12-1 21:06
提示: 作者被禁止或删除 内容自动屏蔽
dlfeng 发表于 2019-12-1 22:51
大佬大佬!
越飞越远 发表于 2019-12-2 08:30
感觉自己是个文盲
小黑侠 发表于 2019-12-2 08:50
感谢楼主 学习了  刚好在对这个有点疑惑
世界如此温柔 发表于 2019-12-2 08:59
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-29 02:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表