0x01

拿到程序,直接IDA放进去看一下,结果如图:

我们发现main中有四个函数,我们一个一个进去,经过分析之后,发现authenticate();是关键函数,所以,接下来我们进去看看。

void authenticate()
{
wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch]
wchar_t *s2; // [esp+801Ch] [ebp-Ch] s2 = (wchar_t *)decrypt(&s, &dword_8048A90);
if ( fgetws(ws, 0x2000, stdin) )
{
ws[wcslen(ws) - 1] = 0;
if ( !wcscmp(ws, s2) )
wprintf(&unk_8048B44);
else
wprintf(&unk_8048BA4);
}
free(s2);
}

这里可以看出,关键的地方在

decrypt(&s, &dword_8048A90);

所以我们在decrypt结束处下断电,然后观察寄存器的值,这里我们使用gdb,因为这个程序是linux下运行的,所以我们使用gdb

0x02

1.打开gdb

2.向gdb中加载文件

3.在decrypt()结束处下断(通过IDA我们可以知道结束处的地址为0x08048707)

4.r 运行

5.查看寄存器

6.将寄存器eax中的值直接以字符串形式输出,拿到flag

最新文章

  1. Visual Studio 2015 Update 3 正式版下载
  2. H5版俄罗斯方块(2)---游戏的基本框架和实现
  3. ubuntu12.04+proftpd1.3.4a的系统用户+虚拟用户权限应用实践
  4. 树莓派版的家用NAS服务器
  5. javascript中substring()、substr()、slice()的区别
  6. Qt的进度条设置
  7. 我的日常工具——gdb篇
  8. 创建对象_原型(Prototype)模式_深拷贝
  9. MongoDB - MongoDB CRUD Operations, Query Documents, Project Fields to Return from Query
  10. 扒一扒各大电商网站的m站都用的什么前端技术输入日志标题
  11. 微软在 .NET 3.5 新增了一个 HashSet 类,在 .NET 4 新增了一个 SortedSet 类,本文介绍他们的特性,并比较他们的异同。
  12. iOS绘图教程 (转,拷贝以记录)
  13. UVA 1401 Remember the Word(用Trie加速动态规划)
  14. Android之获取本地图片并压缩方法
  15. python环境配置selenium与IE、Chrome、Firefox、PhantomJS
  16. document 例子
  17. C#实现文件的压缩和解压
  18. ios 获取当前ViewController
  19. mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法
  20. 【tmos】使用joda-time来个格式化时间

热门文章

  1. Flutter 粘合剂CustomScrollView控件
  2. Java——Spring整合Mybatis(IDEA版)
  3. Flutter 首页必用组件NestedScrollView
  4. idea设置配置提示模板
  5. SpringCloudStream学习(一)RabbitMQ基础
  6. Day_08【面向对象】扩展案例3_使用多态的形式创建缉毒狗对象,调用缉毒方法和吼叫方法
  7. 一文带你了解Spring核心接口Ordered的实现及应用
  8. C#如何给WinForm的button等控件添加快捷键
  9. git init 后关联github仓库是发生错误:
  10. c++简单string实现