zoukankan      html  css  js  c++  java
  • 《逆向工程核心原理》 李承远

    • 《逆向工程核心原理》李承远

      国内翻译版的有关恶意代码分析的书籍,找到了两本书,该书是其中一本(韩国人所写),另一本是恶意代码分析实战。后一本略难,所以选了这一本来看。

      第一部分 代码逆向技术基础
      1. 关于逆向工程

        介绍了简单的概念和分析方法,以及提供了随书代码链接。以及 Keep Passion~

      2. 逆向分析 Hello World! 程序

        用一个大概所有编程书籍都会举的例子,带大家熟悉代码结构,熟悉OD工具。

      3. 小端标记法

        这个要读懂,因为阅读OD工具调试窗口显示的内容需要知道该知识背景。

        一句话就是,“大端:数据在内存中从低地址到高地址数据顺序对存储;小端:数据在内存中从低地址到高地址数据逆序对存储”。

      4. IA-32 寄存器基本讲解

        有汇编语言基础的该章可快速读过。没有的仔细读读,若要进一步自学,推荐汇编语言(第2版)阅读该书,目前该书已经有第三版了。我阅读的是第二版,因为学校图书馆只有第二版QAQ

      5. 了解栈是先进后出(后进先出)。

      6. 分析 apex' crackle#1

        小试牛刀,培养兴趣。也许是从窥探到放弃~ 2333333

      7. 栈帧

        重要。该章的内容虽然简短,但是 Reverse 不可或缺。对照着0day安全 (第2版)第二章 2.1 系统栈的工作原理,可能好理解一些。然后,书中的例子建议动手调试一下。

      8. abex' crackle #2

        这章明显提升了难度。个人读完和大致调试完该章的体会是,若要在逆向有所擅长,win32汇编编程经验和Windows操作系统知识储备必不可少。

      9. Process Explorer ——最优秀的进程管理工具

        看看就好

      10. 函数调用约定

      • 栈内存是固定的,ESP用来指示栈的当前位置,若ESP指向栈底,则无法再使用该栈。函数调用后如何处理ESP,这就是函数调用约定要解决的问题。主要的函数调用约定如下。

        函数参数入栈顺序 清理栈空间 应用场景
        cdecl 从右向左 调用者 主要在C语言中使用
        stdcall 从右向左 被调用者 常用于Win 32 API
        fastcall 若某函数有4个参数,则前2个参数分别使用ECX、EDX寄存器传递。其它参数从右向左入栈。 被调用者 常用于Win 32 API
      1. 视频讲座

      书中提到的一个网站值得一看https://forum.tuts4you.com

      1. 究竟应当如何学习代码逆向分析

      一言以蔽之,“你一定行!”

      第二部分 PE 文件格式
      1. PE 文件格式

      好难~ 看了两遍。顺过后边用到再回来~

      可能对理解本章知识点有帮助的帖子:VA&RVA 和 RVA to RAW

      1. 运行时压缩

      这章主要讲 http://upx.sourceforge.net 该工具的运用。发现 恶意代码分析实战 一书也有提到该网站,当然建议小白(比如我,手动滑稽)先阅读《逆向工程核心原理》,然后阅读《恶意代码分析实战》。

      1. 调试 UPX 压缩的 notepad 程序

      2. 基址重定位表

      因为 ASLR 机制,需要地址重定位。

      1. 从可执行文件中删除 .reloc 节区

      贯穿整本书有57章之多,但许多章节都是及其之短。比如,本章~

      1. UPack PE文件头详细分析

      (Win)Upack 0.39 final by dwing

      1. UPack 调试 - 查找 OEP

      2. “内嵌补丁”练习

      第三部分 DLL 注入
      1. Windows 消息钩取

      2. 恶意键盘记录器

      3. DLL 注入

      4. DLL 卸载

      读完23、24章节内容,感触颇深的是需要熟练 C/C++,以及对 Windows API 有一定程度了解,不需要也不可能掌握所有 API ,碰到会查询即可。

      1. 通过修改 PE 加载 DLL

      (P_{231})底部的“每个IID结构体的大小为14个字节,整体大小为14*5=64”没看懂。是否应修改为“每个IID结构体的大小为16个字节,整体大小为16*4=64。因为IMAGE_IMPORT_DESCRIPTOR(IID)结构体有四个双字(DWORD,double word,2*16bit)成员,其中TimeDateStamp一般省略”

      1. PE Tools

      2. 第27章 代码注入

      3. 使用汇编语言编写注入代码

      第四部分 API 钩取
      1. API 钩取:逆向分析之 “花”

      2. 记事本 WriteFile() API 钩取

      3. 关于调试器

      4. 计算器显示中文数字

      5. 隐藏进程

      Calculator v1.7 by cybult

      书中(P_{353}),图33-22 stealth3.dll练习(隐藏)输入的命令应改为:

      C:work>HideProc2.exe -hide stealth3.dll
      
      1. 高级全局API钩取:IE连接控制

      2. 优秀分析工具的五种标准

      第五部分 64 位 &Windows 内核 6
      1. 64位计算

      2. x64处理器

      3. PE32+

      4. WinDbg

      5. 64位调试

      6. ASLR(Address Space Layout Randomization)

      7. 内核6中的会话

      8. 内核6中的DLL注入

      9. InjDll.exe:DLL注入专用工具

      第六部分 高级逆向分析技术
      1. TLS(Thread Local Storage)回调函数

      2. TEB(Thread Environment Block)

      3. PEB(Process Environment Block)

      4. SEH(Structured Exception Handling)

      5. IA-32指令

      下载 IA-32 用户手册

      第七部分 反调试技术
      1. 反调试技术

      2. 静态反调试技术

      3. 动态反调试技术

      4. 高级反调试技术

      第八部分 调试练习
      1. 调试练习1:服务

      2. 调试练习2:自我创建

      3. 调试练习3:PE映像切换

      4. 调试练习4:Debug Blocker

      • 结束语
  • 相关阅读:
    [JS]手写动画最小时间间隔设置
    [CSS3]chrome浏览器中支持汉字的最小像素是12px,如何让显示更小的字体
    [HTML,CSS]div+css垂直水平居中
    promise经典题目
    HTML5新兴API
    使用MessageChannel(消息通道)进行深拷贝
    原生js手写Promise
    github图片显示不出来-已解决
    前端原生js加密解密
    vue-cli3前端工程静态文件下载
  • 原文地址:https://www.cnblogs.com/hacker-x/p/10005605.html
Copyright © 2011-2022 走看看