ubuntu下禁止TeamViewer开机自启分析

由于习惯在Windows下用TeamViewer,所以我在ubuntu下也装上了TeamViewer(deb包),可是TeamViewer开机自启选项怎么也改不了,查查进程和安装目录,才发现TeamViewer是在wine下运行的。好吧,先回到windows下分析分析。

TeamViewer官方下载页面:http://www.teamviewer.com/zhcn/download/linux.aspx

一.Windows下分析TeamViewer开机自启项,不想看的可以略过

1.对大多数软件来说,如果软件界面中提供了开机自启选项,那么设置开机自启的配置文件要么是软件的相关文件目录,要么是注册表
TeamViewer这个软件提供了开机自启选项,那么它究竟是在哪配置的呢?
我们这里用到一个工具ProcessMonitor(有些人称它为Procmon)
软件引用页:  http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
下载地址:http://download.sysinternals.com/files/ProcessMonitor.zip
打开之后我们会看到一大堆事件,这时我们就要设置过滤器了。
首先我们过滤要监控的进程 

2.使用Procmon中的过滤器过滤进程
点击倒三角
点击Architecture旁边的箭头,选择Process Name,
点击is旁边的箭头,选择begins with,
在文本框中输入TeamViewer
点Add,点OK,这样我们就过滤出以TeamViewer开头的两个进程TeamViewer.exe和TeamViewer_Service.exe了
但是过滤出来的事件还是有点多。
由于我们只关注注册表和文件系统的读写操作,我们依次点击工具栏的后三个按钮(分别是网络,进程,性能)
 

2.使用过滤器过滤文件操作
我们先来看看文件的变化
先工具栏注册表的按钮,这样就只显示文件操作了
但是还不够,由于我们基本只关注文件的创建和写操作,我们还要对结果进行过滤
CreateFile/WriteFile
添加两个过滤器 Operation contains CreateFile和Operation contains WriteFile
结果出来之后
程序就只是修改了TeamViewer9_Logfile.log等几个日志文件,说明不是我们想要的 


3.使用过滤器过滤注册表操作
接下来我们分析注册表的变化,
首先工具栏的五个过滤图标只保留注册表的
删掉过滤文件系统的条件
接下来我们过滤操作,由于我们不清楚注册表表有哪些操作,我们猜想应该有cteate和write,但是不知道具体名字的时候我们该怎么做呢
点击Operation下的某一条记录比如RegEnumValue,点击鼠标右键,会有一个Exclude 'RegEnumValue'表示不包含RegEnumValue,点击它,我们就建立了一个Operation Exclude 'RegEnumValue' 的过滤器,然后我们再建立其他的过滤条件
最后只保留RegSetValue/RegCreateKey/RegDeleteKey就可以了,貌似这全是VB里面的函数名
做完这些之后我们设置TeamViewer里面的开机启动选项
取消开机自启后RegDeleteKey 了"Always_Online",RegSetValue "Autostart_GUI"=dword:00000000,重新选择开机自启则是相反的过程。
 

4.文本比对
为了方便比较,我们导出注册表进行文本比对
从下面这个路径导出注册表之后用Beyond Compare 3文件比对工具进行文本比对
HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer\Version9
开机自启的注册表文件为start.reg
取消开机自启选项的是nostart.reg
可以看到 取消开机自启后
"Always_Online"=dword:00000001这个键值对已经没有了
"Autostart_GUI"=dword:00000001这个键值改成了"Autostart_GUI"=dword:00000000

由此我们可以简单的看出来Always_Online这个键值对应开机自启选项


二.回到ubuntu找线索

由于windows是在注册表中定义开机自启的,自然而然的猜想,wine的注册表中会不会有相同的键值对呢?

TeamViewer的deb包在ubuntu系统中有两个配置的地方,分别是/opt/teamviewer9/和~/.config/teamviewer9/,先用ls命令看一下都有什么吧

ls ~/.config/teamviewer9/
结果为
config  dosdevices  drive_c  logfiles  system.reg  userdef.reg  user.reg

ls /opt/teamviewer9/
结果为
config  doc  logfiles  tv_bin
在~/.config/teamviewer9/下有三个reg注册表,拷贝过来打开看看

cp  ~/.config/teamviewer9/*.reg  ~/tmp/
结果是里面没有任何关于TeamViewer和Always_Online的键值对

再看看,不是还有两个 config目录没看嘛?

第一个配置文件

cat ~/.config/teamviewer9/config/client.conf
这里保存的是用户登陆的信息,部分文字如下

TeamViewer User Settings
# It is not recommended to edit this file manually


[int32] BuddyLoginFlags = 7
[strng] BuddyLoginName = ""
第二个配置文件

cat /opt/teamviewer9/config/global.conf
这里保存的是全局配置信息,部分文字如下
TeamViewer Global Settings
# It is not recommended to edit this file manually


[int32] Always_Online = 1
[bin  ] Certificate = 
第三个配置信息

内容和第一个配置信息一样,路径是/opt/teamviewer9/config/用户名/client.conf

从第二个配置信息开头就可以看到有Always_Online这个字段,修改它的值为0就可以了

sudo vim /opt/teamviewer9/config/global.conf
修改这个文件的
[int32] Always_Online = 1
改为
[int32] Always_Online = 0

另外要注意的是:软件自己设置的禁止开机自启并不是真正的禁止开机,实际上还是有进程存在的,ubuntu下的进程名为teamviewerd,是个守护进程,同样Windows下也实现了类似的机制。

ps axj|grep teamviewerd
查看结果,标题是我添加的,还有一个grep进程被我删了

 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND

    1  1146  1146  1146 ?           -1 Ssl      0   0:03 /opt/teamviewer9/tv_bin/teamviewerd -f
teamviewerd进程的TPGID为-1即为守护进程







你可能感兴趣的:(ubuntu,注册表,TeamViewer)