首页
社区
课程
招聘
[原创]软件逆向需要学习的基础知识
发表于: 2020-7-19 20:05 10251

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

2020-7-19 20:05
10251

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

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

知识块

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

汇编

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

 

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


[课程]FART 脱壳王!加量不加价!FART作者讲授!

最后于 2020-7-19 20:05 被qq6282371编辑 ,原因:
收藏
免费 4
支持
分享
最新回复 (26)
雪    币: 487
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
劝退
2020-7-19 20:21
1
雪    币: 3013
活跃值: (981)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
嗯确实杂
2020-7-19 21:14
0
雪    币: 5514
活跃值: (2254)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看科锐课程表就知道了
2020-7-19 21:48
0
雪    币: 312
活跃值: (358)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
像一些中间语言我还没有写
比如smali、il等等
考虑到这些语言甚至连一份完整的参考书都没有
所以就不写了,因为写了,也没有系统学习的可能
2020-7-19 22:57
0
雪    币: 7121
活跃值: (125793)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
小白一看头皮发麻
楼主能出一期如何让小白学C的文章吗?
谢谢楼主了!
2020-7-19 23:57
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
64位汇编看什么书啊?
2020-7-20 00:41
0
雪    币: 16161
活跃值: (1345)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
就跟下棋一样,需要不断的坐棋和制造机会。
不会创造问题与解决问题,没有编程的思想,就永远成不了高手。
最佳办法就是编程开发辅助汇编分析工具,不断把论坛看雪论坛精华中的技巧和总结变成实例代码对对抗不同的程序。
2020-7-20 07:09
0
雪    币: 312
活跃值: (358)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
sYstemk1t 64位汇编看什么书啊?
最可靠的是参考CPU厂商的参考手册
比如x64参考 Intel® 64 and IA-32 architectures software developer’s manual combined volumes:1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D, and 4.pdf
如果觉得这个难啃,可以利用嵌入式汇编和vs的调试功能
一边写汇编一边调试观察效果
2020-7-20 08:55
0
雪    币: 312
活跃值: (358)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
HlccFu 小白一看头皮发麻 楼主能出一期如何让小白学C的文章吗? 谢谢楼主了!
这个一期文章肯定解决不了的
相当于《逆向从零基础入门到放弃》
每个千把页是没法完的
完全新手,建议先学完C/C++/Python中一门的语法
毕竟逆向到后面还是要写代码的
2020-7-20 08:59
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
qq6282371 最可靠的是参考CPU厂商的参考手册 比如x64参考 Intel® 64 and IA-32 architectures software developer’s manual combined vo ...
好的,大佬请教您个问题,逆向工作不好找,做病毒分析有哪些相关的书籍可以查看呢?可以推荐一下嘛?
2020-7-20 11:07
0
雪    币: 7039
活跃值: (4194)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学无止境
2020-7-20 13:29
0
雪    币: 17
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
你说的我基本都知道,但是我还不会逆向,
2020-7-20 21:33
0
雪    币: 312
活跃值: (358)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
李一凡 你说的我基本都知道,但是我还不会逆向,
这个还是需要编程基础的
另外知道和掌握还是有一定的差距的
2020-7-20 23:24
0
雪    币: 312
活跃值: (358)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
sYstemk1t 好的,大佬请教您个问题,逆向工作不好找,做病毒分析有哪些相关的书籍可以查看呢?可以推荐一下嘛?
病毒方面,如果有一些基础的话可以看看
恶意代码分析实战
2020-7-20 23:25
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
qq6282371 病毒方面,如果有一些基础的话可以看看 恶意代码分析实战
好的,您有没有推荐的就业方向呢?您可以推荐一些书籍嘛?
2020-7-20 23:58
0
雪    币: 199
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
学无止境。
2020-7-21 09:37
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
学无止境
2020-7-21 11:10
0
雪    币: 312
活跃值: (358)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
sYstemk1t 好的,您有没有推荐的就业方向呢?您可以推荐一些书籍嘛?
这玩意就业我还真不知道怎么推荐
有需要的企业要求一般不会太低,当然薪资行业内水平算高的了
此外不考虑学历,算是我知道的唯一的低学历可以拿高薪的
方向的话,逆向,安全,防护,数据采集,脚本
都可以
但是相当一部分人都是做其他的,然后兼职做做
2020-7-22 09:45
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
qq6282371 这玩意就业我还真不知道怎么推荐 有需要的企业要求一般不会太低,当然薪资行业内水平算高的了 此外不考虑学历,算是我知道的唯一的低学历可以拿高薪的 方向的话,逆向,安全,防护,数据采集,脚本 都可 ...
好的,谢谢您啦!
2020-7-22 12:53
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
不一定是劝退,对有恒心有毅力的人也许是一份指导,谢谢了!道理很长慢慢走,美食也要小口小口吃!
2020-8-31 20:51
0
雪    币: 13
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
被劝退了
2020-9-19 21:14
0
雪    币: 2634
活跃值: (6351)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
会开发某些功能且逆向刚才能知道以后逆向遇到的函数是干嘛用的,攻防一体的概念。当乞丐还得要学会怎样博得他人的同情世界上没有简单的事,对逆向没兴趣的或没有以从事这行挣钱为目的的最好早点退。
2020-9-19 21:24
0
雪    币: 312
活跃值: (358)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
劝退其实也挺好,因为人是有特长的,不是所有事情都能擅长的
及早发现无法适应,可以早点更换方向
因为很多逆向公开课,看上去都很简单
但是找到这个简单方法
背后是一大堆知识的支撑,才能完成
2020-9-24 10:18
1
雪    币: 3700
活跃值: (3817)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
25
同意楼主说法!
2020-9-24 10:47
0
游客
登录 | 注册 方可回帖
返回
//