第一次尝试做题,参考了众多大神的讲解,终于把这题解出来了。

我们先运行一下replace.exe,出现下面的框,什么都不输或输错点击check会异外终止。这题估计就是要让Wrong变成correct或right

我们先进行一下静态分析,通过ida打开,在String window中找目标字符串

可以看到是"Correct!"。然后单击这一行,会跳到下面这个界面

鼠标右键correct那行,点击list cross references to,会有一个弹窗xrefs to String,选定后点击ok,就会跳到下面这张图

我们可以看到流程图中没有一个流程是可以到我们要显示的字符串。

接下来我们进行动态分析,打开OllyDbg

我们先定位到correct字符串所在地址,在ida方框左下角可以看到是401073

我们可以看到在401073的指令前有两条jmp指令,说明肯定不会执行401073这条指令,和ida中流程图显示的一样。

在图上的地方按下F2设置断点(40104C是输入开始的地方)

现在开始运行程序,按F9,输入123(7bh),点check,然后F8单步执行

当执行完40105A的指令后,EAX=7B,说明输入的数据被放到了EAX中

单步执行到jmp replace.404609,程序会跳转到404609继续执行

这里还有一个改变,EAX的值变为了60160646

注意40469F这条指令,它将C39000C6这条机器码放入了40466F中

这是40466F中的指令,4046A9这条指令调用了存放在40466F中的子程序,这条语句是将90这个机器码放入DS:[EAX]中。(90是nop的机器码),也就是改变ds:[eax]中的指令,使之变为nop。

接着你会发现已经单步执行不了,程序出现异常停止。做到现在会发现仍然没有头绪。

我们换一个输入重新按照上面的步骤再做一遍,这次我们输入0

这次我们发现最后的EAX变为601605CB,改变是在mov eax,dword ptr ds:[4084d0]后,我们跳转到4084d0去看一下

我们看前面的十六进制数(注意一定要看的是前面的机器码,要不然会找不到flag),是将601605CB放入EAX。我们回头看一下输入123的情况

我们将两个数相减刚好可以得到7B,说明4084d0中的数是由601605CB+输入的数得到的。

这里就是需要我们思考的地方:要如何才能把jmp这条指令给跳过呢,结合上面运行(40466F处的子程序),我们其实可以很容易想到,我们将nop指令放到401071的位置就可以了,那EAX的值又是由我们输入的值加601605CB得到,所以我们输入的数是401071-601605CB=A02A 0AA6(将它转换成十进制数是2687109798)

输入正确答案后401071和401072都变成了nop(因为404609处的子程序调用了两次40466F处的字程序,中间还将EAX+1,所以401072也变成了nop)

运行成功截图

Reversing.Kr replace题解相关推荐

  1. Reversing.kr Replace

    程序运行: 只能输入数字序列,不能输入字母和字符 查壳,无壳,标准c++程序: 我在想,能不能爆破,嘿嘿嘿,但是我不会写相应的脚本. IDA打开,String,找到    "Correct! ...

  2. 170925 逆向-Reversing.kr(Replace)

    1625-5 王子昂 总结<2017年9月25日> [连续第358天总结] A. Reversing.kr-Replace B. Replace 先查一波壳,还好没有 运行,是一个GUI程 ...

  3. 170929 逆向-Reversing.kr(Ransomware)

    1625-5 王子昂 总结<2017年9月29日> [连续第362天总结] A. Reversing.kr-Ransomware B. Ransomware readme提示解密文件,运行 ...

  4. 171003 逆向-Reversing.kr(CSHOP)

    1625-5 王子昂 总结<2017年10月3日> [连续第368天总结] A. Reversing.kr-CSHOP B. CSHOP 这次只有一个文件,没有可怕的ReadMe了 打开是 ...

  5. 171002 逆向-Reversing.kr(AutoHotKey)

    1625-5 王子昂 总结<2017年10月2日> [连续第367天总结] A. Reversing.kr-AutoHotKey B. AutoHotKey 解压出来一个ReadMe一个e ...

  6. 171013 逆向-Reversing.kr(AutoHotKey2)

    1625-5 王子昂 总结<2017年10月13日> [连续第378天总结] A. reversing.kr B. AutoHotKey2 解压出来又来了ReadMe 不过这次比较简单,翻 ...

  7. 171019 逆向-Reversing.kr(MetroApp)

    1625-5 王子昂 总结<2017年10月19日> [连续第384天总结] A. reversing.kr B. MetroApp 这次的逆向处理了很多麻烦,学到了不少关于MetroAp ...

  8. reversing.kr学习之路-ransomeware

    ransomeware - writeup 题目来源 http://reversing.kr 题目知识点:upx + 花指令 + 堆栈不平衡 + exe特征码提取key 前言 文章只是记录一下自己在r ...

  9. 170926 逆向-Reversing.kr(ImagePrc)

    1625-5 王子昂 总结<2017年9月26日> [连续第359天总结] A. Reversing.kr-ImagePrc B. ImagePrc 首先查壳,运行发现是一个光秃秃的窗口, ...

最新文章

  1. IDEA配置GitHub报错GitHub Invalid authentication data.404 Not Found-Not Found
  2. 【翻译】Designing Websites for iPhone X
  3. 前端_网页编程 节流
  4. Vue2.0 脚手架代码详解
  5. C++空类中的默认函数
  6. SQL Server 2017 AlwaysOn AG 自动初始化(十六)
  7. csv datatable 乱码 导出_C#将DataTable导出到csv文件
  8. 【CodingNoBorder - 10】无际软工队 - 求职岛:ALPHA 阶段事后分析
  9. SOLIDWORKS+CAD+UG软件培训 三款电脑学习软件
  10. 2021-11-06大数据学习日志——数据埋点+网络爬虫——数据提取
  11. 程序开发中的软实力和硬实力
  12. 词根词缀|ori/orn/ortho/pact/pan及词源O的故事
  13. OneTab: 一键合并所有 Chrome 浏览器标签页
  14. 时尚新享受,告别鼠标手
  15. C#设计模式(6)——原型模式(Prototype Pattern)
  16. html标签的默认样式及去除
  17. 蒲公英内测分发平台使用体验
  18. git 错误error: failed to push some refs to
  19. 如何解决NavigationDuplicated: Avoided redundant navigation to current location:问题
  20. 复姓宇文,全国只有3万人,我们找你好久了,你是那一个吗?

热门文章

  1. java response文件流下载,后缀名称设置
  2. 解决系统之间Session不共享问题的几种方案
  3. Java中Spring Cloud Ribbon
  4. nohup.out文件过大的解决办法
  5. MySql中 DELIMITER
  6. VS返回到上次编辑和进入到下次编辑的位置快捷键
  7. ios中amplify配置configure_Asp.netCore3.0 简单的webapi接口 (中)
  8. python 生成器读取文件
  9. c 命令行简易计算器
  10. 阿里云ECS利用密钥对ssh登录服务器