我对学习逆向工程非常感兴趣。尤其是在恶意软件方面。任何帮助深表感谢
在开始学习逆向工程之前我应该学习什么?
学习 C/C++ 是必须的吗?
我应该学习汇编语言吗?
如果我对逆向工程一无所知,Ghidra 是一个很好的学习工具还是应该先熟悉 IDA 和 OllyDbg?
您有什么特别推荐的好资源/教程吗?
我对学习逆向工程非常感兴趣。尤其是在恶意软件方面。任何帮助深表感谢
在开始学习逆向工程之前我应该学习什么?
学习 C/C++ 是必须的吗?
我应该学习汇编语言吗?
如果我对逆向工程一无所知,Ghidra 是一个很好的学习工具还是应该先熟悉 IDA 和 OllyDbg?
您有什么特别推荐的好资源/教程吗?
在开始学习逆向工程之前我应该学习什么?
组装是必须的。没有对装配的深刻理解,你就不能认真地对任何东西进行逆向工程。此外,您必须熟悉相关工具,具体取决于平台;不知道它们的每一个细节,只是基本的使用——当你需要它们时,你会在实践中学到更复杂的东西。我强烈建议您阅读此论坛:例如,您可以通过投票对问题进行排序并阅读最佳答案 - 这样您将获得有关该主题的基本见解。
必须学习 C/C++ 编程吗?
如果您真的不想 - 不,但强烈建议您这样做。有几个原因:
C/C++.C或 伪C形式产生输出,因此更容易理解。C/C++并观察生成的程序集非常有帮助 - 您将熟悉基本结构,如调用约定、循环、if-else 或 switch 块、为代码优化执行的技巧等等。如果我对逆向工程一无所知,Ghidra 是一个很好的学习工具,还是应该先熟悉 IDA 和 OllyDbg?
我想说,从 IDA 开始。为什么?因为它可能是使用最广泛的反汇编程序。此外,如果您想到与逆向工程相关的工作,您可能经常会发现熟悉 IDA 作为一项要求。最后,根据我的个人经验(我从 IDA 开始),它非常用户友好,因此您可以完全专注于逆向工程,而不必过多关注如何使用工具。
OllyDbg 是一个动态分析工具,你应该从静态分析开始(不运行程序),因为你必须完全理解程序集才能从调试器中受益。但当然你应该在某个时候学习它。
您推荐我查看的任何好的来源/教程特别是?
两本书:初学者逆向工程和实用恶意软件分析-如果您阅读它们,您将获得很多知识。要在实践中查看恶意软件逆向工程,您可以在 cybrary.it 上学习课程。
首先,欢迎来到令人着迷且令人沮丧的恶意软件逆向世界。
在开始学习逆向工程之前我应该学习什么?
我相信最好的方法是开始学习基本的逆向工程并随着你的前进而改进。
必须学习 C/C++ 编程吗?
不,这不是“必须”。但是,如果您不知道如何编程,您将很容易感到沮丧。让我们想一想,什么是恶意软件逆向工程?它是获取样本(二进制文件)或其他形式的恶意代码并试图了解代码的编写方式、目的和实现方式的过程。如果您不知道如何编程,您将发现逆向代码非常困难。
如果我对逆向工程一无所知,Ghidra 是一个很好的学习工具,还是应该先熟悉 IDA 和 OllyDbg?
首先,我不推荐这个工具。您可能应该从更基本的方法开始,例如我在此处描述的。
此外,您可能想要查看以下 StackExchange 线程以及教程和学习路径:
心中有一个大目标总是好的,而对于 RE,这种追求的开始阶段似乎势不可挡。我在这里看到了很多很棒的答案,所以我只想谈谈我对您接下来应该采取什么措施的看法。
我同意,asm 是必须的。选择一个特定的方法有利也有弊,但我建议选择一个并真正坚持下去,并坚持使用特定的语法,这样你就可以在学习中充满自信地离开那个阶段。不要害怕同时学习C/C++,它们可以用来相互理解!一位名叫“What's Creel”的 youtuber 在他的组装教程中采用了这种方法。
我还想鼓励你“去你的资源带你去的地方”。如果你找到了一个很好的使用radare2 的教程,现在忘记 ghidra 和 ida 只是和你面前的老师一起去,那一刻你喜欢。对我来说,系统也是如此。如果您正在 youtube 上观看 John Hammond 完整的 CTF,请下载用于虚拟机的 Ubuntu iso 并继续。没有什么比学习更重要的了,如果你累了,也要学会有效地休息!吃好,运动,充足的睡眠等等。
这让我想到我的最后一点,认识你自己!如果您知道自己是哪种类型的学习者,请寻找这些资源,以便更有效地学习。我个人是视觉和社交的混合体。无论是听两个人在播客上讨论某事,还是在喝咖啡时自己与某人交谈,那篇社交文章都对我有很大帮助,这些对话将我试图理解的概念牢记在心。有些人可以只阅读手册并从中学习,或者尝试代码直到他们了解发生了什么。不管它是什么,只要拥抱并繁殖它,这样你就可以避免像这样的技术领域的(最终)绝望感。这些不同的学习方法也可能因您的心情或环境而异,所以不要忘记保持灵活性!这是资源列表,
史蒂夫吉布森现在的安全
软件工程日报
Kubernetes 播客
CppCast
暗网日记(创意!)
我,阅读英特尔手册并提出问题,胜过独自阅读
Liveoverflow,非常专业且引人入胜,从他的Binary Exploitation 系列开始
会议,会议,会议。我从这些演讲中学到了很多东西,也许从Cpp con 2018开始,但你首先需要很好地掌握基础知识
Ippsec,我能说这家伙做到了这一切!
youtube 只是一个宝库,我确定我忘记了很多......
TinyCards 应用程序,我制作了三副 x86 组装说明
SoloLearn 和 Enki 应用程序,只是基本的编程语言介绍,问答格式。
Reddit,AskNetSec subreddit 似乎有最高质量的讨论
做!创建!刚学习编程、硬件、网络等的学生经常会向我抱怨不理解,当我问他们做了什么时,我听到的唯一的事情是被动的。你不能不动手就学这些东西,即使这意味着写下你的想法或问题(他们不需要马上回答......)但是如果你可以在虚拟机中编写程序或测试恶意软件你自己会更好。
有一个github账号
制作学习日记以进行反思
我想说的最后一件事,我根本不想让您气馁,而是尝试牢牢掌握基本原理,这样做应该会加速您的进步。当我听到学生谈论他们的技术梦想时,我经常想起这张照片,并且在上课 1 个月后,我发现他们没有精神耐力在某件事上工作超过 10 分钟,在这种情况下,尽管只需替换“bug”狩猎”与“逆向工程”,因为它们都是长期目标:

记住,一步一个脚印!