怎么学习逆向工程?

1、具备基本的编程能力,如c、c++,c、c++作为很基础的语言,不要求精通,但是必须会写,写个小工具完全没有问题,同时要对c++的类、继承、虚表虚函数等很熟悉,很多游戏都用c++开发,而且比较庞大,只有基础掌握好,才能更好的从汇编层来读懂代码,很多时候我们看单条汇编指令时完全没有问题的,但是一旦组合起来就会完全不知所云了,通过必须对高级语言对应的汇编语言实现要掌握,比如函数工作的原理,几种调用约定、参数传递方式以及返回值等都必须掌握,这方面网上很多资料。最好能懂python,python作为一种脚本语言,可以用来开发许多逆向调试工具的插件,可以帮我们节省很多的体力活。

2、对windows系统知识比较了解,因为外挂会设计比较多的windows系统知识,因此要对windows底层要一定的掌握,比如windows api,以及外观常用的注入、钩子技术还有windows系统的异常处理机制等,可以到广海论坛学习外挂常用的较按键精灵、加速齿轮以及注入等同用知识,书籍可以可以参见《windows核心编程》,对底层知识了解越多,分析外挂技术也越容易。

3、对逆向分析工具的熟练使用,我们平时工作中面对的是二进制可执行程序,要做外挂我们首先的分析目标程序,因此对常用的调试工具windbg、ollydbg、静态分析工具ida一定要熟练使用。网上教程也比较多,可以到看雪论坛上利用相关的crackme练手学习。

4、掌握外壳原理和技巧,熟悉常见的加解密算法、反调试技巧,我们分析程序时经常会遇到很多加壳程序,因此我们必须对外壳的原理和基本知识比较熟悉,熟练掌握同用的脱壳技巧,同时对各种反调试技巧也必须要很熟悉,在分析程序时,一般会遇到很多加解密算法,因此必须要对各种加解密算法的特征有一定的快速识别能力,这样能更快得帮助我们分析目标程序的核心功能。这方面可以参看《加密与解密》这本书,讲的非常好与详细。以上就是基本的学习思路,逆向和外挂都涉及比较多的知识,学习的东西会比较多,而且周期会比较长,不过相信一句话天道酬勤,只要努力就会有收获,其他方面如网络方面的知识也需要学习,我们学习逆向外挂技术,目的是更多的去除各种外挂,为我们游戏爱好者更好的服务,而不是利用这些技术来破坏游戏的公平。

你可能感兴趣的:(学习)