吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7660|回复: 6
收起左侧

[调试逆向] Pwnable.kr codemap的另一种解法

[复制链接]
Kobayashi 发表于 2017-3-24 00:45
本帖最后由 Kobayashi 于 2017-3-24 13:51 编辑

Pwnable.kr是韩国人的一个在线OJ站点,codemap是第一层中的一道题。

题目要求很简单,给了一个codemap.exe程序,该程序会按照一定规则从堆上分配内存块m[0..10000],并填充字符串。连接上服务器后,需要回答出m[1], m[2]和m[3]中字符串的内容,如果全部回答正确则可以得到分数,否则失败。

程序没有加壳,很好逆向,可以看到因为随机数种子(也就是srand的参数)和循环次数有关,所以每次分配的内存空间和填充内容,都是可以确定的。比较套路一点的解法是,用WinDbg等调试工具,在内存分配处和填充处,记录申请的大小和填充内容,大概十几行脚本就可以搞定。机智一点的,可以直接把F5出来的代码,替换掉部分内容,编译一下。

然而楼主就很菜。刚刚配好的环境,除了IDA自带的调试功能以外,没什么可用的调试器,而又不想写脚本。于是就注意到了刚刚装好的Visual Studio 2015上。记得从VS2012开始就新增了一个功能,可以追踪堆的分配情况。这个功能原本设计是为了防止内存泄露的,不过现在看起来,似乎也可以用。于是测试一下:

1. 启动Codemap.exe,让Visual Studio 2015附加上去:

1.png

2. 暂停之。在调用栈中回溯到主函数,并定位到循环的终止点,下断点。之后启用堆监视:

2.png

3. 继续运行程序,按照提示操作,直到循环结束。在堆监视模块中,保存快照

3.png

4. 点击查看细节,之后双击打开Unresolved allocations。若无该项,则在过滤器中取消Hide Unresolved Allocations

4.png

5. 排序,然后就都是套路啦

5.png

雕虫小计。不过倒也的确说明了,在Windows下工作,微软自家的工具就够咱们喝一壶了………

免费评分

参与人数 2威望 +1 吾爱币 +12 热心值 +2 收起 理由
arryboom + 2 + 1 我很赞同!
Hmily + 1 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

godwan 发表于 2017-3-25 19:26
原来是 crackme 啊
 楼主| Kobayashi 发表于 2017-3-26 20:52
Tath 发表于 2017-9-3 11:12 来自手机
yangxiao 发表于 2017-9-5 13:47
学学啦  不怎么懂
Tath 发表于 2017-9-16 08:21 来自手机
通俗易懂……不错
mandilian 发表于 2017-10-9 11:39

学学啦  不怎么懂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-22 10:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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