[原创]软件逆向需要学习的基础知识

您所在的位置:网站首页 东京大学本科学费多少 [原创]软件逆向需要学习的基础知识

[原创]软件逆向需要学习的基础知识

2024-05-28 17:06| 来源: 网络整理| 查看: 265

软件逆向需要学习的基础知识

我在求助区看了一些求助问题感觉提问题的人问题不少但最主要的就是基础知识零散不全导致很多问题本身是基于错误的认识来的看上去像是缘木求鱼所以我尝试在这里整理一下逆向所需的一些基础知识并解释一下这些知识所起的作用方便大家查漏补缺,提高自己当然,一家之言,难免有所错误和偏颇欢迎大家批评指正对于一些正确的意见,我会随时接纳更正

知识块

逆向是一门杂学而非专科,涉及的知识很多,所以我这里先谈谈分块,以及每个分块的作用

汇编

汇编这块没什么特别需要说的搞逆向不掌握一些汇编,基本就是盲人摸象,能出成果就只能靠运气。汇编分为arm和x86两大架构然后每个架构又分为32位和64位随着64位机器的普及32位程序会越来越少这块的学习难点在于64位CPU和32位CPU差异明显,甚至可以说是巨大所以可以认为是两个汇编语言要精通这块非常难但是大家可以先从简单的上手

C/C++

为什么要说C/C++可能有的人说我不会这个也能逆向呀话虽然如此,但是这里面有一个很重要的问题很多linux或者android的系统库,都是使用C和C++写的一些游戏的引擎、加密解密、网络通信、签名校验等等模块也是用C/C++写的模块除此之外,大量的开源模块(音视频、图形图像处理等)也是采用的这些开发语言所以不会也能做,但是会可以让你有更多的手段和方法去做除了这个原因另外一个原因是很多逆向工具的底层也需要该语言

Java

现在是手机的时代,也是移动互联网的时代android作为移动开发的主力平台之一其上应用开发的主要语言Java也就自然水涨船高熟悉Java,进而熟悉android的Java库对于逆向分析、拦截破解有至关重要的帮助

文件格式

文件格式这块比较杂简单的包括wav、bmp、apk文件格式有了一定了解以后,可以尝试去解析pe、elf文件格式然后可以尝试png、jpeg、jar、dex文件格式最后就可以尝试一下一些没有详细文档的文件格式比如luac、ocx

加密/编码算法

这块首先要了解的是一些基础的比如异或、比如url编码等等然后了解base64(出镜率极高)crc校验算法 md5接着可以学习tea最后可以搞搞aes des注意这些算法可以先学习正向的不同的算法处理过的数据会有一些特征见多了,很多时候可以在你逆向的时候给予你很大的帮助

工具

工具这块就更多了od、ida、wireshark、x64dbg、frida、visual studio、make、gcc这些论坛上面有,我就不赘述了其中有一些是开发工具,比如visual studio虽然这些工具是开发工具,但是其中包含很多工具比如spy++,比如depends等等

框架

逆向框架比较多比如Cydia、xposed、substrate、ghidra等等每个框架其所适用的平台、条件也略有差异Cydia主要是在苹果下做逆向xposed则主要是android下逆向substrate是一种拦截的方案ghidra则是一个集成环境

其他

逆向这块所需要的知识其实没有一个尽头除了上面的一些内容,下面这些内容,对你的逆向也会有极大的帮助网络协议(http、https、ftp、ssh)CPU架构(arm架构、x86架构、64位架构、机器码)操作系统(Windows、Linux、android、iOS)驱动开发中断原理动态库的加载和卸载

 

先写这么多吧,后续有问题我再修改补充欢迎大家提问和讨论

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

最后于 2020-7-19 20:05 被qq6282371编辑 ,原因:


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3