做成功这道逆向题了,哈哈哈哈。
  启程。
  运行了一下子程序,发现它是要保证所有灯亮着才会给flag。如下图所示。

  我聪明滴认为首先可以通过关键字符串找到关键代码位置哦。
1.找到关键代码位置
  使用olldbg运行此程序,右键反汇编界面-》查找-》所有参考文本字串。看到了“the flag is”。如下图

  记住这一块的详细信息。如下。
文本字串参考位于 ConsoleA:.textbss, 条目 1
地址=0045E968
反汇编=push ConsoleA.0050B0F0
文本字串=ASCII "done!!! the flag is "
  emmmm,看到了地址是0045E968,那可以想办法修改代码跳转到此处哦。
 
2.修改代码
  拿起米尺划重点。第一点,很多时候那些非跳转的代码是不能篡改成跳转代码的,好像内存将那儿调成不可写,反正运行不成功。第二点,和脱壳一样,有些call会卡住就记住,重新来过得时候记得F4直接在此call下一行继续运行即可。 目的是什么,目的就是找到jmp语句篡改跳到关键语句处。
  在找jmp语句中,我经历了如下call,特此记住。
00460373  |.  E8 D8FCFFFF        call ConsoleA.00460050
00460058  |.  E8 13000000        call ConsoleA.00460070
> \E8 80010000   call ConsoleA.00460340
00460359  |.  E8 609AFFFF   call ConsoleA.00459DBE
  那么,这时候,就可以愉快地直接从地址“00460359”出发,找到jmp语句篡改。

  按运行键,运行到后,一步一步往后走起来-。-
  哇,找到jmp语句,毫不犹豫地篡改。
 
  执行,有回显了,看见没。如下图

  继续运行,不一会儿,就蹦出flag。

  开心,愉快地结束。
  但目前,我看有说法说,这是一种取巧的方法,就是暴力的方法,不能应用到实践中。真正的逆向应该是分析逻辑,然后编写功能去顺着它正确的逻辑走下去,这也是我后面需要努力的。

最新文章

  1. ui library
  2. TODO:小程序手机预览调试
  3. R语言 奇怪的NA
  4. CentOS7下Firewall防火墙配置用法详解
  5. POJ 1159 回文串-LCS
  6. jquery Jsonp 跨域访问
  7. java之浮点数(笔记)
  8. GSM Hacking:如何对GSM/GPRS网络测试进行测试
  9. lintcode :reverse integer 颠倒整数
  10. Eclipse使用技巧总结(二)
  11. 【LSGDOJ1383】修改回文 dp
  12. python编程从入门到实战1-3章
  13. 缓存:前端页面缓存、服务器缓存(依赖SQL)MVC3
  14. HDU5769-Substring-多校#4-1006-后缀数组
  15. 8 款macOS 分屏应用让你的桌面窗口不再乱糟糟
  16. 【转】《深入理解C# 3.x的新特性》博文系列汇总
  17. YY:2018互联网创业公司应看清的事情
  18. LightOJ 1224 - DNA Prefix - [字典树上DFS]
  19. 简单rmi示例
  20. android 在HTML中显示bitmap

热门文章

  1. day05-if-else语句
  2. jquery-menu-aim插件实现二级导航
  3. 企业应用--Nginx&web部署
  4. vue:图片切换动态显示
  5. PL/SQL 日期时间类型函数及运算
  6. Windows下查看端口常用命令以及关闭端口的方法
  7. C# 如何获取鼠标在屏幕上的位置,不论程序是否为活动状态
  8. 一: Introduction(介绍)
  9. thymeleaf 字面量
  10. 学JS的心路历程Day28 - PixiJS -基础(二)