你可以永远相信IDA。
之前在本地虚拟机上使用ida的linux_server成功动调,但是类比地使用阿里云服务器却一直不行,阿里云的安全端口也放行了,但就是连不上。很烦,所以这个问题稍后放了放。前两天在捣鼓mysql的远程连接,也遇到了一直连不上的坑,后来发现是CentOS自带的防火墙的锅。今天突然想到,估计这个ida一直无法在阿里云的CentOS上动调,也是防火墙端口没放行的原因(阿里云的放行端口和CentOS自带的防火墙的放行端口不是一个概念)
下面介绍一些详细过程:
测试端口23946是否可通
在windows打开cmd,使用telnet命令测试服务器的端口是否打开,telnet在win10默认是关闭的
控制面板内找到程序和功能,在打开的新页面中点击启用或关闭windows功能,再在弹出的新窗口中找到并勾选Telnet Client,确定。
cmd下,键入telnet ip 23946,其中ip换成你的服务器ip,如果瞬间清屏并输入一行乱七八糟的字符串则说明端口是通的,如果一直停在正在连接的界面,是不通的。
阿里云放行端口
CentOS防火墙放行端口
如果你是使用的是ubuntu,应该不需要这一步的。
ps -ef|grep firewall
firewall-cmd --state
查看防火墙状态
firewall-cmd --list-all
查看防火墙放行端口
firewall-cmd --permanent --add-port=23946/tcp
放行23946端口
service firewalld reload
重启防火墙
firewall-cmd --list-all
再次查看防火墙放行端口
现在再使用telnet应该可以测试通了
服务端
首先进入ida安装目录下的dbgsrv文件夹,将其中的linux_server和linux_server64上传到你的阿里云服务器,路径随便。
在终端修改这两个文件的权限
chmod 777 linux_server
chmod 777 linux_server64
总感觉给others以7的权限有点危险,不管了,现这样用着吧。你可以试着把权限设为755,不给w权限,《加密与解密》中使用的是755权限。
然后把要动态调试的程序放入服务器,记住路径,待会要填写程序所在路径。
然后修改权限,不然待会远程连接的时候,ida会报权限不足
chmod 777 XXX
来到你的linux_server所在目录,在终端输入./linux_server或./linux_server64,这取决于你的程序是32位还是64位。
客户端
如上图所示,选择远程linux调试。
填写要调试的程序的路径、服务器域名或ip、密码。未设置则密码为空。
特别注意密码,看了很多网上的教程,都说这个密码是服务器的密码,简直误人子弟。
下面是《加密与解密》中的解释。(第四版91页)
点击ok,然后就可以调试啦。
可能出现的问题
端口被占用
可能是已经运行过一个linux_server或linux_server64程序,也可能是其他程序占用了默认端口23946
netstat -ntlp|grep 23946
查看正在使用端口23946的程序的信息
ps -ef|grep linux_server
查看包含字符串linux_server的程序的信息
这两条命令可以看出27811的进程跑着linux_server,占用了23946端口
kill -9 27811
杀掉进程
客户端弹窗报错
“incompatible debugging server:address size is 4 bytes,expected 4”
检查程序的位数和linux_server的位数和客户端的位数,需一致。
进阶
添加密码验证
启动linux_server时添加-P
./linux_server64 -P123456
将123456替换成你设置的密码。
注意,-P和密码之间不能有空格,要紧挨着。如果有空格,则密码仍为空。
然后在客户端填写密码。
后台运行linux_server
linux的一个终端就是一个进程,如果你关闭了这个终端,里面进行的服务也会中断。这里介绍一个命令。
screen -S name
创建一个新窗口,名称为name(name可以替换成你希望的名称),然后在这个窗口内打开linux_server服务。
当你需要回到主窗口时,先按ctrl+a,然后继续按下d,按d的时候不要放松ctrl+a,即可回到主界面。
想要回到name窗口,可使用screen -r name
,如果除了主窗口外只有一个窗口,可以使用screen -r
这样,只要你不杀掉新开的这个窗口,哪怕你关掉终端,也能远程调试。
但是需要注意的是,这样一直开着linux_server服务,存在安全隐患,所以不调试时建议不要开启linux_server服务。
更多screen使用方式,欢迎谷歌搜索。
作者小白,如有谬误,劳请赐教,感激万分。
相关阅读: