打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

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

知识块

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

汇编

汇编这块没什么特别需要说的
搞逆向不掌握一些汇编,基本就是盲人摸象,能出成果就只能靠运气。
汇编分为armx86两大架构
然后每个架构又分为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)
驱动开发
中断原理
动态库的加载和卸载

 

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
android基础入门教程!一次关于JVM的面试经历,实战篇
面试又挂了:大厂面试到底更看重学历还是技术?来看看大佬的说法
走心的安卓工程师跳槽经验分享
Android Dalvik虚拟机初识
如何成为一位「不那么差」的程序员
【面试分享】今日头条Java面试题,复习资料完整版PDF
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服