吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 631|回复: 4
收起左侧

[新手问题] CTF ezre

[复制链接]
zishen 发表于 2023-12-21 15:15
在攻防世界上刷到了一个题,是一道迷宫题
IDA上提取数据后 image.png 这样的

image.png
题解这样说,有点没明白,为什么dworld类型的数据是4位一组,只取第一位作为数值,请各位大佬解惑一下!
image.png
这个是我写的转换的,虽然是对的,但是不明白
原wp链接:https://blog.csdn.net/m0_65080524/article/details/134223723

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

yes2 发表于 2023-12-21 15:47
本帖最后由 yes2 于 2023-12-21 15:54 编辑

我看了一下原帖,对比了他贴出来的ida图,有以下猜测:
所谓的“dword类型的数据是4位一组,只取第一位作为数值”,首先这个表达是错误的,dword类型是4字节一组,而不是位。
作者描述的“位”是哪里来的呢?是因为他导出的数组是unsigned char类型的数组,那一个dword肯定是导出成4个单字节啊。
作者说的“第一位”应该是指第一个字节,在内存中就是dword的低8位。刚好题目中数值都比较小,另外3个字节中都是0。
算是歪打正着吧。。。错误的理解实现了正确的结果。

至于为什么导出的是unsigned char类型的数组,我认为ida应该是支持dword数组的,可能需要在ida里先手动将dword_202020地址识别为dword数组,
然后导出的时候可能就正确了。我没有尝试过,但我认为ida这么牛逼的软件,不可能连这点功能都实现不了。

如果正确导出为dword数组,那应该就不需要去除后3位这个环节了。
对不起我错了,试了一下ida确实只能导出单字节,这么睿智的吗。。。
那其实还有办法,就是ida导出的字节数组unsigned char ida_chars,你可以自己强转一下:
unsigned int* my_dwords = (unsigned int*)ida_chars;
然后后面使用my_dwords来显示数据就好了。

没有贬低原作者的意思,愿意将ctf解题思路分享出来都值得受益者感谢。
lies2014 发表于 2023-12-21 17:29
 楼主| zishen 发表于 2023-12-21 16:23
yes2 发表于 2023-12-21 15:47
我看了一下原帖,对比了他贴出来的ida图,有以下猜测:
所谓的“dword类型的数据是4位一组,只取第一位作为 ...

牛啊大佬!感谢回复!我试了一下强转类型,确实可以。再次感谢!!!
Tree24 发表于 2023-12-21 19:32
导出数据的话可以试试LazyIDA这个插件,能省不少时间
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 14:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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