自己收集的一些逆向工程的入门概念——壳、注册机、算法求逆、反病毒、免杀
一、软件逆向工程
大多数时候都会被简称为逆向工程(Reverse engineering)或直接将其称为逆向(Reverse)。软件逆向工程的基本思路是将二进制代码按照一定格式进行正确有效的反汇编,并通过分析反汇编代码再配合其调用的外部函数或系统API等,对其代码逻辑进行理解,而在这个过程中最重要的就是推理出该二进制代码使用的数据结构。
二、加壳与脱壳
壳是程序免杀的手段之一,也起到干扰逆向分析的作用。好的壳可以让恶意软件伪装成普通软件,也可以保护内层的原程序。反病毒与反查杀都是在加壳与攻壳中实现。壳一般分为两类,一类是压缩壳,另一类是加密壳。壳这个部分的技术延申出去,就是软件加固、软件脱壳等领域的内容了。
加固产品由于核心原理固定,已被研究得七七八八,市面上也有很多脱壳的工具,新的加固产品面世,被脱壳的周期也非常短。前各家的社区加固产品主要用来防止入门级黑客破解应用、防止APK被二次打包,防止被插入广告或者恶意代码等,商业壳现在都开始上vmp了。
三、注册机与算法求逆
初级的软件版权通常靠的是“序列号"、”激活码“一类的东西来保护,这种保护是离线的。注册码的验证算法一般内置在软件内部,对输入的字符串做换算,这个换算的过程就是注册、验证算法。通过逆向调试手段分析反汇编代码,找到关键算法之后就开始“求逆”(需要数学功底),用代码实现这个逆运算就是所谓的注册机。
四、反病毒与免杀
逆向细化的两个分支,免杀偏向于攻,目的是让恶意软件不被杀毒软件检测到,或者是让壳更隐蔽。反病毒偏向于防,通过特征码等的技术手段检测病毒。
五、简单CTF逆向题的流程
1)查壳脱壳
2)定位关键代码段(通常是注册机代码段)
3)分析软件执行流程和其他flag线索
4)算法求逆得到flag
六、总结
CTF逆向题实际对应的场景感觉是目前软件破解行业的工作流程,查壳脱壳自不用说,算法求逆就是编写注册机。复杂逆向题可能就会出现各种反调试、花指令、复杂壳、高难注册算法吧。
逆向入门以后,再想进阶的话可以做反病毒、免杀、软件补丁、移动安全等工作。
自己收集的一些逆向工程的入门概念——壳、注册机、算法求逆、反病毒、免杀相关推荐
- 远控免杀从入门到实践(6)-代码篇-Powershell
郑重声明:文中所涉及的技术.思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担! <远控免杀从入门到实践>系列文章目录: 1.远控免杀从 ...
- 远控免杀从入门到实践(3)-代码篇-C/C++
郑重声明:文中所涉及的技术.思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担! <远控免杀从入门到实践>系列文章目录: 1.远控免杀从 ...
- 远控免杀从入门到实践(5)-代码篇-Python
郑重声明:文中所涉及的技术.思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担! <远控免杀从入门到实践>系列文章目录: 1.远控免杀从 ...
- 逆向工程恶意软件入门(基础篇)
本文讲的是逆向工程恶意软件入门(基础篇), 前言 在这个系列文章中,我会向大家介绍逆向工程恶意软件的各个方面的知识.逆向工程恶意软件是一个很深奥和复杂的主题,因此很少有人掌握它,这也是这个领域的薪酬很 ...
- [ctf逆向001]:逆向工程体系化入门
逆向工程体系化入门 文章目录 逆向工程体系化入门 一.课前测试 二.逆向工程基础体系 三.数据的存储及表示 四.C语言编译过程 五.汇编语言 六.内存管理 七.PE文件 八.相关资源 一.课前测试 1 ...
- 第1天:基础入门-概念名词
前言 如有不妥之处,还望指正. 目录 前言 1.域名 1.1 什么是域名? 1.2 域名在哪里注册? 1.3 什么是顶级域名.二级域名.多级域名和子域名? 1.4 域名发现对于安全测试的意义 2.DN ...
- WEB安全基础入门-概念名词
本文章主要对WEB安全的基本入门做一个系统的概述及基本认识! 1.域名 域名即与IP地址一一对应的名称,网上有多个注册域名的网站如万网注册域名. 在域名中www.为顶级域名,其后为多级域名,在WEB安 ...
- C功底挑战Java菜鸟入门概念干货(一)
一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行. 2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...
- CCNA-第一篇-基础入门概念
** 基础入门概念 **前言 没有什么学习是简单的.任何东西,包括你打游戏(除非是弱智的单机游戏)搞IT,一个月熬熬夜 月薪过X-W的大有人在,早9晚5一个月3K,自己选择.所以看你怎么学,每个人都很 ...
最新文章
- PNAS | 基因调控之深度学习揭示免疫细胞分化的调节机制
- 【quickhybrid】组件(自定义)API的实现
- HTTP协议中的keep-alive
- Redis 未授权访问漏洞
- “我来管管看”系列:如何提高生产计划的实际执行率?
- 乌班图 之 常用操作命令(二)
- classpath理解
- 力扣605 种花问题(C++,附思路)
- 第12天--css三种定位及z-index
- 一步一步实现KNN分类算法
- 51单片机复习:红外通信
- 利用场景法设计atm自动取款机的测试用例_黑盒测试之场景法
- jquery-实现的添加个人信息加验证,附完全的注释,相信大家可以看懂
- 简单好用、且永久免费的内网穿透工具
- 利用tcp三次握手,使用awl伪装MAC地址进行多线程SYN洪水攻击
- ubuntu使用zsh进行命令行自动补全
- Git/Github工作流 (workflow)
- python写七夕超硬核礼物!
- 用matlab画曲顶柱体费用数据,走过曲顶柱体——国家大剧院
- C++经典算法题-迭代法求方程根
热门文章
- ICT分析选点调试,ict治具技术培训
- PAT甲级A1013. Battle Over Cities (25)
- CCF CSP 202112-2 序列查询新解
- 【转】介绍一些免费/开源的医学影像后处理工具
- 日志流量分析之ftp传输过程分析
- Linux系统下运行jar文件,提示:No main manifest attribute, in XXX.jar
- 时间、延时、延缓操作
- MySql安装出现3306端口!解决方法亲测成功
- STA series --- 7.Configuring the STA SDC(PATR-II)
- 【人工智能】智能语音交互技术与应用