首先将windows下IDA的文件下dbgsrv子目录下的linux_server或者liunux_server64(根据你要调试的ELF文件是32还是64位的,其实最好两个都拖进去)拖进linux。

进入linux里将这两个文件的权限提高
chmod +x linux_server
chmod +x linux_server64
把需要调试的ELF文件与linux_server放在同意目录下。然后根据ELF文件执行linux_server或者linux_server64,这是linux等待连接状态。
./linux_server
接下来再Windows打开IDA,Debugger->Run->Remote Linux debugger 。
第一个框填ELF在linux里面的位置,第二个框填ELF在linux里所在文件夹,第四个框填写linux的IP地址。端口默认就好,点击OK。

这样就远程连接成功了,接下来看windows的IDA就可以动态调试了。命令和OD差不多,F7单步进入,F8单步步过,F2下断点……最重要的是可以用F5查看伪C代码,爽歪歪。然后更改一些跳转等等。。。

simple-check-100 为例
用远程连接好了之后,F5主函数,在check_key()处下断点,F2或者直接在行数前单击即可。

点击debugger—>start process 运行,Linux里提示输入字符,随便输入111。

查看汇编代码发现关键跳转,F8单步到此处,发现下一步会跳转到错误提示并退出程序。

所以我们改汇编代码为 jnz 就不会跳转了。Edit—>Patch program —>Assemble。把jz 改为 jnz 。

继续F8单步往下走。经过sub_80483D0后flag已经在linux里打印出来了。


嘿嘿嘿 ,这个动态调试太好用了 ,第一次用,舒服舒服。都不用分析头痛的逻辑代码。
网友评论