来源:rootkit_com 作者:Clandestiny 翻译:fqh

“Help!我是一名新手!我需要一款rootkit入侵朋友的机器…我想编写自己的rootkit…我想开始开发代码… 该从哪里入手?”

此类问题在rootkit.com上不断地出现,并且重复回答一些人问的相同问题浪费了大量时间,我想到我们应当编辑一个短小的文档来对它们进行一般性的叙述。下面的论述远非完整的,社区中有经验的人可以提建议来对它进行拓展。

你想知道从哪里入门?好的,首先,如果你来到这里是为了寻找入侵你朋友机器的既成方法,你可来错了地方!Rootkit.com主要是一个知识性的网站,它目的是提供一些有关rootkit开发的资料和相关编程的文章。另一方面,如果你是一名想学习如何编写自己的rootkit的新手,你需要一些如何入门的建议,请接着阅读…不幸的是,rootkit开发和软件开发需要相当多你必须掌握的前提知识:

1. 首先,你得学习一种语言。C / C++最好的选择。不像其他语言,C具有内嵌汇编语言的能力。虽然大多数程序员极少使用到汇编语言,但是rootkit的开发有时需要汇编语言的灵活性,所以x86汇编应当成为你的辅助编程语言。Randall Hyde的《Art Of Assembly》是汇编编程最好的参考资料之一。该书有印刷和电子书两种可获取的版本。
《Art of Assembly》 (下载版) 的下载网址是http://webster.cs.ucr.edu/AoA/DOS/

2. 你需要学习一些操作系统的理论。虽然大学的设计操作系统理论课程不是必需的,但阅读大学计算机学科教材的若干章节是有益的。特别是进程﹑线程﹑内存管理等知识,你得了解。
这方面很好的书籍有两本:
《Operating System Concepts》 ,Silberschatz, Galvin, 和 Gagne著
《Operating Systems》Deitel & Deitel著

3. 你得应用理论知识,理解真实世界中的操作系统比如windows实际上是如何工作的。虽然Windows不公开源代码,但是有很多牛人热衷于对系统内核工作原理进行逆向分析,并公开了他们的发现。弄一本此类的书吧,比如Sven Schreiber写的《Undocumented Windows 2000 Secrets》 或者Prasad Dabak, Milind Borate,和 Sandeep Phadke写《Undocumented Windows NT》。

4. 如果你想着手开发内核rootkit,你还得学习如何编写内核模式驱动程序(KMD)。很不幸,互联网上关于内核编程的教程,适合初学者的很少。不过,Four-4写出了几篇很好的win32汇编版的教程,它们可在http://www.assembly-journal.com/sitemap.php获取。除此之外,这方面的书籍还有一些:包括Art Baker 和Jerry Lozano蓍的《The Windows 2000 Device Driver Book》以及Walter Oney蓍的《Programming The Microsoft Windows Driver Model》。

5. 学习逆向代码分析的基础知识,也就是说对于没有源代码的二进制文件也能(通过逆向分析)了解到(代码功能等)有关信息。练习逆向分析软件的保护机制(序列号,时间检验,脱壳,演示软件的功能限制等等)是发展这个技能的有趣方式。有很多程序员编写了训练用的小型程序。这些程序称之“crackmes”和” “reversemes”,我们可用它们来进行练习。在http://www.crackmes.de和http://www.reversemes.de上收集了大量这样的小程序。http://www.woodmann.com上有大量高手写的关于逆向工程的资源。http://bib.universitas-virtualis.org/上也有若干优秀教程和文章。逆向分析同样需要一些特别的工具,包括反汇编器和调试器。IDA Pro是首选的反汇编器,SoftICE (内核调试器)和OllyDebug是可供使用的调试器。其他各式各样的此类工具可从http://protools.cjb.net获取

6. 最后,本站讨论了一些入侵工具和rootkit,如果你需要理解它们的资料,我推荐Greg Hoglund的《Exploiting Software》(本站就有)和《Shell Coder's Handbook》。两者都会提供给你很好的入门知识。《Exploiting Software》有一章节介绍了基本的rootkit技术。一般,基于它们的数据拦截方法,Rootkit可以分为两种:要么是挂勾,要么是直接内核对象操作(DKOM)。为了理解挂勾技术,以下链接可能对你有帮助。

API 检测技术(API Spying Techniques)
http://www.internals.com/articles/apispy/apispy.htm
挂勾高级函数(Advanced Function Hooking)
http://www.phrack.org/show.php?p=58&a=8
挂勾Windows NT服务表(Windows NT Service Table Hooking)
http://www.wiretapped.net/~fyre/sst.html
挂勾Windows NT系统服务(Hooking Windows NT System Services)
http://www.windowsitlibrary.com/Content/356/06/2.html
挂勾Windows NT系统调用(Windows NT System-Call Hooking)
http://www.ddj.com/articles/1997/9701/

rookit入門的更多相关文章

  1. 依賴注入入門——Unity(二)

    參考博客文章http://www.cnblogs.com/kebixisimba/category/130432.html http://www.cnblogs.com/qqlin/tag/Unity ...

  2. GOOGLE搜索從入門到精通V4.0

    1,前言2,摘要3,如何使用本文4,Google簡介5,搜索入門6,初階搜索 6.1,搜索結果要求包含兩個及兩個以上關鍵字 6.2,搜索結果要求不包含某些特定資訊 6.3,搜索結果至少包含多個關鍵字中 ...

  3. Flask從入門到入土(三)——模板

    模板是一個包含響應文本的文件,其中包含佔位變量表示的動態部分,其具體值只是請求上下文中才能知道.使用真實值替換變量,再返回最終得到的響應字符串,這一過程稱爲渲染.爲了渲染模板,Flask使用了一個名爲 ...

  4. Windows PowerShell 入門(7)-関数編2

    この連載では.Microsoftが提供している新しいシェル.Windows Power Shellの使い方を解説します.前回に引き続きPowerShellにおける関数の取り扱いとして.変数と関数のスコ ...

  5. Windows PowerShell 入門(3)-スクリプト編

    これまでの記事 Windows PowerShell 入門(1)-基本操作編 Windows PowerShell 入門(2)-基本操作編 2 対象読者 Windows PowerShellでコマンド ...

  6. Windows PowerShell 入門(2)-基本操作編 2

    前回に引き続きMicrosoftが提供している新しいシェル.Windows Power Shellの基本操作方法を学びます.基本操作編第2弾の今回は.パイプの使用方法を中心としたコマンドレットの操作方 ...

  7. Delphi APP 開發入門(四)簡易手電筒

    Delphi APP 開發入門(四)簡易手電筒 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數:32 ...

  8. Delphi APP 開發入門(六)Object Pascal 語法初探

    Delphi APP 開發入門(六)Object Pascal 語法初探 分享: Share on facebookShare on twitterShare on google_plusone_sh ...

  9. Delphi APP 開發入門(五)GPS 定位功能

    Delphi APP 開發入門(五)GPS 定位功能 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數 ...

随机推荐

  1. win8.1安装Python提示缺失api-ms-win-crt-runtime-l1-1-0.dll问题

    Windows下安装python成功之后,运行python,提示缺少api-ms-win-crt-runtime-l1-1-0.dll.很显然,安装上这个dll文件不就可以了吗.于是就开始百度,找资料 ...

  2. HDFS文件的基本操作

    HDFS文件的基本操作: package wjn; import java.io.BufferedInputStream; import java.io.BufferedReader; import ...

  3. Ubuntu下安装chrome浏览器步骤

    进入 Ubuntu 18.04 桌面,按下 Ctrl + Alt + t 键盘组合键,启动终端. 也可以按下 Win 键(或叫 Super 键),在 Dash 的搜索框中输入 terminal 或“终 ...

  4. springboot基于注解动态配置多数据源以及多数据源的事务统一

    参考文档:https://www.cnblogs.com/zhangboyu/p/7622412.html https://blog.csdn.net/qq_34322777/article/deta ...

  5. LC: 404.左叶子节点

    计算给定二叉树的所有左叶子之和. 示例: / \ 9 20 / \ 15 7 ,所以返回 24 解析 我们需要找到这样的节点 属于叶子节点 属于父节点的左子节点 方法一:用栈,dfs遍历,用全局变量r ...

  6. vue2 打包部署(vue-cli )

    1.一般打包 :直接 npm run build.(webpack的文件,根据不同的命令,执行不同的代码的) 注:这种打包的静态文件,只能放在web服务器中的根目录下才能运行. 2.在服务器中 非根目 ...

  7. mysql5.6配置-my

    # mkdir -p /home/mysql/3306/{data,binlog,logs} [client] port = socket=/tmp/my3306.sock [mysql] no-au ...

  8. BZOJ 4545

    bzoj 4545 给定一个踹树,支持几种操作. 本质不同子串询问 加入子树 询问字符串\(S\) 在树上的出现次数. 好码好码 重点就是维护\(parent\) 树,考虑用\(LCT\)维护此树. ...

  9. 极简Vue的异步组件函数

    export default new Router({ routes: [ { path: '/live', name: 'live', component: () => import('@/v ...

  10. flask中的目录解析

    首先我们看一下博客blog的封面,flask和django都属于web框架.不过flask属于轻量级web框架,功能的实现是通过扩展实现的,extension.py 中存放各个对象,具体的功能通过对象 ...