IDAlinux远端动态调试实战过程记录

新手一枚,如有错误(不足)请指正,谢谢!!
练习动调的文件
题目下载:点击下载

参考资料:
IDA动态调试ELF

IDA载入,进入main函数,F5查看伪代码

int __cdecl main(int argc, const char **argv, const char **envp)
{
  time_t v3; // ebx
  __pid_t v4; // eax
  unsigned int v5; // ST18_4
  unsigned int v6; // ST1C_4
  char v7; // ST20_1
  signed int i; // [esp+14h] [ebp-44h]
  char s[40]; // [esp+24h] [ebp-34h]
  unsigned int v11; // [esp+4Ch] [ebp-Ch]

  v11 = __readgsdword(0x14u);
  s[0] = 83;
  s[1] = 69;
  s[2] = 67;
  s[3] = 67;
  s[4] = 79;
  s[5] = 78;
  s[6] = 123;
  s[7] = 87;
  s[8] = 101;
  s[9] = 108;
  s[10] = 99;
  s[11] = 111;
  s[12] = 109;
  s[13] = 101;
  s[14] = 32;
  s[15] = 116;
  s[16] = 111;
  s[17] = 32;
  s[18] = 116;
  s[19] = 104;
  s[20] = 101;
  s[21] = 32;
  s[22] = 83;
  s[23] = 69;
  s[24] = 67;
  s[25] = 67;
  s[26] = 79;
  s[27] = 78;
  s[28] = 32;
  s[29] = 50;
  s[30] = 48;
  s[31] = 49;
  s[32] = 52;
  s[33] = 32;
  s[34] = 67;
  s[35] = 84;
  s[36] = 70;
  s[37] = 33;
  s[38] = 125;
  s[39] = 0;
  v3 = time(0);
  v4 = getpid();
  srand(v3 + v4);
  for ( i = 0; i <= 99; ++i )
  {
    v5 = rand() % 40u;
    v6 = rand() % 40u;
    v7 = s[v5];
    s[v5] = s[v6];
    s[v6] = v7;
  }
  puts(s);
  return 0;
}

将s[]数组按顺序输出,则为flag,此时练习动调
随便找行代码,F2下断点

动态调试步骤

在linux里准备好linux_server64和待动调的文件

IDAlinux远端动态调试实战过程记录_第1张图片
其中linux_server64在IDA目录的dbgsrv文件夹

启动linux_server64

代码

./linux_server64

首次启动时候要输入代码

chmod +x linux_server64

IDAlinux远端动态调试实战过程记录_第2张图片

IDA中选择调试器

IDAlinux远端动态调试实战过程记录_第3张图片

对调试器进行配置

IDAlinux远端动态调试实战过程记录_第4张图片
IDAlinux远端动态调试实战过程记录_第5张图片
查看虚拟机IP命令
1. hostname -I
2. ifconfig
点击OK

F9运行

IDAlinux远端动态调试实战过程记录_第6张图片
IDAlinux远端动态调试实战过程记录_第7张图片
动调时候提示错误
IDAlinux远端动态调试实战过程记录_第8张图片
由于调试的文件为ELF32,则应该用linux_server而不应该用linux_server64
重新配置
IDAlinux远端动态调试实战过程记录_第9张图片

sudo apt-get install libstdc++6
sudo apt-get install lib32stdc++6

安装这两个东西
可以监听了
IDAlinux远端动态调试实战过程记录_第10张图片
报这个错误……
IDAlinux远端动态调试实战过程记录_第11张图片
关闭linux防火墙
service iptables stop

这里点确定
IDAlinux远端动态调试实战过程记录_第12张图片
已经可以调试了
IDAlinux远端动态调试实战过程记录_第13张图片
右上角有运行,点击一下,然后就会断在之前下的断点那里
IDAlinux远端动态调试实战过程记录_第14张图片
然后F5可以查看伪代码
IDAlinux远端动态调试实战过程记录_第15张图片
这里i的地址在栈上的ebp-44h处
IDAlinux远端动态调试实战过程记录_第16张图片
EBP处的地址
IDAlinux远端动态调试实战过程记录_第17张图片
可以算出变量i在栈上的地址
IDAlinux远端动态调试实战过程记录_第18张图片
此时i等于4
IDAlinux远端动态调试实战过程记录_第19张图片
每次F8单步可以执行一次代码
IDAlinux远端动态调试实战过程记录_第20张图片

部分快捷键

F2下断点
F7,f8单步步入
p分析函数,把机器码那些东西翻译成函数
ctrl+s看见系统所有的模块
ctrl+f搜索
单步调试注意右上角,寄存器变蓝色表示被改了
在hex view-1按F2可以修改机器码,再次按F2确定修改
f4移动到光标处
在寄存器窗口按E可以修改寄存器的值
在内存窗口f2可以修改内存的值

你可能感兴趣的:(过程记录)