《逆向工程核心原理》李承远html
国内翻译版的有关恶意代码分析的书籍,找到了两本书,该书是其中一本(韩国人所写),另外一本是恶意代码分析实战。后一本略难,因此选了这一原本看。shell
关于逆向工程编程
介绍了简单的概念和分析方法,以及提供了随书代码连接。以及 Keep Passion~windows
逆向分析 Hello World! 程序api
用一个大概全部编程书籍都会举的例子,带你们熟悉代码结构,熟悉OD工具。安全
小端标记法dom
这个要读懂,由于阅读OD工具调试窗口显示的内容须要知道该知识背景。ide
一句话就是,“大端:数据在内存中从低地址到高地址数据顺序对存储;小端:数据在内存中从低地址到高地址数据逆序对存储”。函数
IA-32 寄存器基本讲解工具
有汇编语言基础的该章可快速读过。没有的仔细读读,若要进一步自学,推荐汇编语言(第2版)阅读该书,目前该书已经有第三版了。我阅读的是第二版,由于学校图书馆只有第二版QAQ
栈
了解栈是先进后出(后进先出)。
分析 apex' crackle#1
小试牛刀,培养兴趣。也许是从窥探到放弃~ 2333333
栈帧
重要。该章的内容虽然简短,可是 Reverse 不可或缺。对照着0day安全 (第2版)第二章 2.1 系统栈的工做原理,可能好理解一些。而后,书中的例子建议动手调试一下。
abex' crackle #2
这章明显提高了难度。我的读完和大体调试完该章的体会是,若要在逆向有所擅长,win32汇编编程经验和Windows操做系统知识储备必不可少。
Process Explorer ——最优秀的进程管理工具
看看就好
函数调用约定
栈内存是固定的,ESP用来指示栈的当前位置,若ESP指向栈底,则没法再使用该栈。函数调用后如何处理ESP,这就是函数调用约定要解决的问题。主要的函数调用约定以下。
函数参数入栈顺序 | 清理栈空间 | 应用场景 | |
---|---|---|---|
cdecl | 从右向左 | 调用者 | 主要在C语言中使用 |
stdcall | 从右向左 | 被调用者 | 经常使用于Win 32 API |
fastcall | 若某函数有4个参数,则前2个参数分别使用ECX、EDX寄存器传递。其它参数从右向左入栈。 | 被调用者 | 经常使用于Win 32 API |
书中提到的一个网站值得一看https://forum.tuts4you.com
一言以蔽之,“你必定行!”
好难~ 看了两遍。顺事后边用到再回来~
可能对理解本章知识点有帮助的帖子:VA&RVA 和 RVA to RAW
这章主要讲 http://upx.sourceforge.net 该工具的运用。发现 恶意代码分析实战 一书也有提到该网站,固然建议小白(好比我,手动滑稽)先阅读《逆向工程核心原理》,而后阅读《恶意代码分析实战》。
调试 UPX 压缩的 notepad 程序
基址重定位表
由于 ASLR 机制,须要地址重定位。
贯穿整本书有57章之多,但许多章节都是及其之短。好比,本章~
(Win)Upack 0.39 final by dwing
UPack 调试 - 查找 OEP
“内嵌补丁”练习
Windows 消息钩取
恶意键盘记录器
DLL 注入
DLL 卸载
读完2三、24章节内容,感触颇深的是须要熟练 C/C++,以及对 Windows API 有必定程度了解,不须要也不可能掌握全部 API ,碰到会查询便可。
\(P_{231}\)底部的“每一个IID结构体的大小为14个字节,总体大小为14*5=64”没看懂。是否应修改成“每一个IID结构体的大小为16个字节,总体大小为16*4=64。由于IMAGE_IMPORT_DESCRIPTOR(IID)结构体有四个双字(DWORD,double word,2*16bit)成员,其中TimeDateStamp通常省略”
PE Tools
第27章 代码注入
使用汇编语言编写注入代码
API 钩取:逆向分析之 “花”
记事本 WriteFile() API 钩取
关于调试器
计算器显示中文数字
隐藏进程
书中\(P_{353}\),图33-22 stealth3.dll练习(隐藏)输入的命令应改成:
C:\work>HideProc2.exe -hide stealth3.dll
高级全局API钩取:IE链接控制
优秀分析工具的五种标准
64位计算
x64处理器
PE32+
WinDbg
64位调试
ASLR(Address Space Layout Randomization)
内核6中的会话
内核6中的DLL注入
InjDll.exe:DLL注入专用工具
TLS(Thread Local Storage)回调函数
TEB(Thread Environment Block)
PEB(Process Environment Block)
SEH(Structured Exception Handling)
IA-32指令
反调试技术
静态反调试技术
动态反调试技术
高级反调试技术
调试练习1:服务
调试练习2:自我建立
调试练习3:PE映像切换
调试练习4:Debug Blocker