第1858章 空操作雪橇

这个功能可以简化一些运算,比如逻辑上要给一个数字乘以2然后输出,在有些时候都不需要运算,只需要将这些数字输出完后,再在后面填上一个NOP,让等待填装的接收区在数字后因此自动填上一个0,就可以实现乘2进位的目的。

还有一个重要的作用,就是通过NOP指令可以产生一定的延迟功能。

虽然没有输出,但是NOP指令同样是需要占用计算机的执行时间的,加上循环次数,就可以在相应次数的指令执行时间,让程序实际上实现“暂停”的功能。

计算机在执行程序的时候,经常是在共用缓冲区内存储数据,这个缓冲区常常需要清空操作,等待总线恢复成无数据运行的状态,巧用NOP指令,就能够实现这样的功能。

然而就是这么有用的一条指令,被有心人发现了新“用处”。

在操作系统当中,指令的输入与返回,是通过堆栈来进行的。

堆栈大体来讲好像一个仓库,仓库分作了几个区域,每个区域用来存放一堆“门牌号”,这样的门牌号,在单片机系统里叫做“寄存器”,程序调用时,工作方式就是挨着读取这些门牌号,将这些地址对应的寄存器中内容读入到栈中,最后将计算结果存放到返回地址当中去。

这时候就有人想到使坏了,因为堆栈的内容填充是从低地址向高地址进行的,最高的位置就是结果地址。

要是在低地址区,比如变量区,给变量填充一个巧妙构造的超长字符串,让这个长字符串超过高地址区,其实就会拿这个变量的后半部分内容,替换掉了返回地址的“门牌”。

将这个“门牌”设置成某个变量的地址,那么现在的返回地址就变成了指向这个变量,如果这个变量当中盛放的是恶意代码,于是这个恶意代码就被成功地读取进了系统里。

这个方式,叫做“堆栈缓冲区溢出”,通过缓冲区溢出,我们能改变程序原有的正常执行流程,去改为执行黑客准备好的恶意代码。

这套操作在WINDOWS系统上一用一个准,也是周至他们研发的防火墙和杀毒软件所保护的重点。

但是这个问题在UNIX为基础的系统上却并不存在,因为UNIX系统对于结果缓冲区的地址分配是随机的,也就是说其返回结果的地址并不一定就在变量地址的后面,可以被黑客轻易推测到,并且利用缓冲区溢出功能轻易替换。

四叶草集团的内部系统,其实使用的就是基于UNIX架构的自主系统,服务器版的COS系统。

不过论坛的信息技术板块上,有人提出过一个攻击方法,那就是“nop sled”,翻译过来就是“空操作雪橇”。

论文指出,虽然UNIX体系的结果返回地址是随机的,但是只需要在实际的攻击代码前注入很长的nop指令,就可以清出一个很大的空间序列来。

然后还是用之前的缓冲区溢出方式进行攻击,只要将程序的控制流指向该序列任意一处,程序计数器逐步加一,直到到达攻击代码的存在的地址,并执行。

这就类似于将之前一个小小的靶子变成了一个巨大的墙,之前需要将箭射中靶子才能完成攻击,现在只需要将箭射到墙上,箭就会被自动送到墙上挂着的靶子上去。

从程序的执行上来看,这就好像是通过滑雪橇的方式,最终访问到雪橇的终点一样,因此被形象地称为“空操作雪橇”。

这个想法从理论上看是可行的,但是在实际操作中却存在许多难题,首先就是你要有在系统上运行恶意代码的机会。

胡天宇他们经过女娲日志分析,发现是从新版的四叶草浏览器开始中招的。

新版浏览器采用的JAVA核心,为了鼓励大家的研发积极性,四叶草集团还发布了研发工具JDK,包括了Java运行编译环境,以及一堆java的工具和类库,并且在不断地进行扩充。

有了这个,所有的程序爱好者都可以设计出一些嵌入式软件,将之嵌入在自己的主页当中,以便他人访问的时候发现“惊喜”。

以前的浏览器所看到的网页都是静态的,有了这个嵌入式工具后,就能够将一些炫酷的动画、小视频、音乐、动态字体效果嵌入到网页上,获得的效果当然是相当惊人的。

现在论坛上就挂着许多用JAVA开发的“软件皮肤”,几乎年轻人喜欢用的软件如四叶草播放器,扣扣,输入法等,都有专门的工作组开发出各种花里胡哨的皮肤来。

甚至有心大的工作组,都开始打起如WINDOWS,MAC这类大型操作系统的“皮肤”替换主题来。

因为JAVA应用是四叶草公司刚刚推出的研发工具,公司内部程序员和论坛中的程序开发爱好者有着高度的重合度和深化合作,在这样的情况下,就难免会有人将外部论坛上的那些小软件,偷偷安装到单位内部的系统上来。

当然了,一般的软件皮肤这种哄年轻人开心的小噱头还引不起四叶草集团程序员违背公司的制度,但是有一款非常方便JAVA开发的代码编写环境的话,那就不一样了。

这位黑客就是这样的一个高手,他在论坛上发布了一个叫做JDK NOTEPAD的工具软件,其实就是一个十分方便用于JDK程序开发的工具,集成了程序员非常喜欢的自动排列代码,功能查错,多色函数首尾匹配,可隐藏注释,版本自动记录等非常方便的功能,最夸张的是还有一个自动优化功能,可以在一定程度上将程序调整得更简洁,更合理,排布更清晰明了,能够极高地提升程序员JAVA程序开发的工作效率。

事后经胡天宇秘密调查,公司里安装了这个软件的人不在少数,在有些部门甚至成了一个普遍现象。

然而谁都没有想到,有一段恶意代码就藏在这个软件的自动优化功能当中。

四叶草公司有严格的制度规定,每个程序都有一定的署名规范,严格按照ISO软件产品标准来执行,每个程序的开头都会有标准注释,表明这个程序的名称,作者,所属部门,程序版本号,历次修改者,修改时间等信息。

这个JDK NOTEPAD也非常的贴心,设置了预置选项,只要你将这些信息事先填成它管理的参数,以后在你调用程序开发模版的时候,会将这些信息都给你在程序中提前写好,程序员就无需再做这些重复性的工作,直接在代码区开始敲代码就行。

然而他们没有想到的是,这些信息被黑客用巧妙的方式获取了。

下拉继续阅读
重生之乘风而起
1859/2666
书详情
重生之乘风而起 完整目录 · 共 2666 章
第1800章 新定义第1801章 有付出有收获第1802章 故人相见第1803章 赏画第1804章 发现新证据第1805章 五星出东方第1806章 有钱但是底蕴不够的模样第1807章 如何复制第1808章 雪珊的想法第1809章 三多九如第1810章 严格执行第1811章 宝藏第1812章 学问方向第1813章 高本汉第1814章 中古音标本第1815章 真正的天才第1816章 穷文富文第1817章 时代不同了第1818章 应该青出于蓝第1819章 还需要编程软件第1820章 歪打正着第1821章 JAVA第1822章 过日子的生活第1823章 年度最佳金曲第1824章 我是中文系的第1825章 没过成火把节第1826章 望子成龙,带子上朝第1827章 变化很大第1828章 论文的好消息第1829章 文字的两大功用特性第1830章 底气很重要第1831章 不变的人性第1832章 百废待兴第1833章 先富起来得多交税第1834章 老技术员第1835章 面试通过第1836章 课题移交第1837章 有时间琢磨学问了第1838章 软件联盟论坛四大金刚第1839章 闲下来了第1840章 过节第1841章 抬河钓第1842章 十月历第1843章 丙穴鱼第1844章 傻鱼钓法第1845章 打饵块第1846章 鱼羊鲜第1847章 不哭不闹得不到第1848章 飞播不均匀的原因第1849章 巨墓第1850章 罕见的葬式第1851章 邛人第1852章 差的破第1853章 工换工肉换肉第1854章 彝人的一生第1855章 科研致富两不误第1856章 给人抄家了第1857章 顶级黑客第1858章 空操作雪橇第1859章 专门针对四叶草第1860章 大吉第1861章 黑猫第1862章 热闹的论坛第1863章 小号第1864章 有篇论文第1865章 孙女第1866章 抓她个措手不及第1867章 自家鸡能吃了第1868章 风光互补和抽水储能第1869章 请客请得惶恐第1870章 蓝天阳光集团第1871章 新设计第1872章 新体系第1873章 步行第1874章 当今世界第1875章 打的第1876章 真偷家第1877章 话中有话第1878章 IEEE Senior Member第1879章 国家可能不同意第1880章 求知欲第1881章 不是技术的胜利第1882章 高智商第1883章 既不独立,也不思考第1884章 有钱女孩对我感兴趣第1885章 大优惠第1886章 “泛在聚合”和“算力网络”第1887章 爱吃包子第1888章 最没人上心的一个房间第1889章 预测不可预测第1890章 一个想法第1891章 小苗同志第1892章 求她第1893章 理论超前第1894章 新家第1895章 买菜第1896章 小肠买不到第1897章 偶像的偶像第1898章 天使第1899章 烧钱
字号18
行距
背景