前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CTF实战24 二进制软件逆向分析基础

CTF实战24 二进制软件逆向分析基础

作者头像
用户1631416
发布2018-08-23 15:32:16
8080
发布2018-08-23 15:32:16
举报
文章被收录于专栏:玄魂工作室

小姐姐优先~

然后来拜一下祖师爷吧~

重要声明

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

逆向工程定义

逆向工程(reverse engineering),又称反向工程,是一种技术过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能性能规格等设计要素,以制作出功能相近,但又不完全一样的产品

逆向工程源于商业及军事领域中的硬件分析

其主要目的是,在无法轻易获得必要的生产信息下,直接从成品的分析,推导产品的设计原理

逆向工程可能会被误认为是对知识产权的严重侵害,但是在实际应用上,反而可能会保护知识产权所有者。例如在集成电路领域,如果怀疑某公司侵犯知识产权,可以用逆向工程技术来寻找证据

为什么要逆向呢?

  • 分析恶意代码
  • 了解软件的技术细节
  • 破解要收费软件(嘿嘿)
  • 加固软件安全(和渗透测试差不多一个类型)
  • 漏洞分析

等等

逆向工程必备技能

1. 肯定就是熟练掌握各基础汇编指令,能看懂普通的汇编代码

首先说一下第一点

这应该不需要怎么解释吧,逆向不懂汇编怎么逆向啊哈哈哈

比如要知道基本的计算机中栈空间是存取数据的,内存空间是存取数据的

什么EAX,EBX,ECX,EDX,ESI等等是干嘛的这样

但是这里还是有个小问题

那有同学问,怎样才算熟练掌握各基础汇编指令呢?

我这里贴一段小小的汇编代码

如果你能不看下面的我的解释

明白这段代码的大概要做的操作

那么恭喜你,你已经熟练掌握基础的汇编指令了

mov ecx, dword ptr [eax+8Ch] add eax, 88h mov edx, dword ptr [eax] mov dword ptr [ecx], edx

第三行呢把eax所指向的那个地址上的数据取出来

赋给了edx,最后把edx的值赋到了ecx指向的那个地址上

可能不是经常做恶意代码分析的人一看这个代码就懵了

2. 要会C语言编程,熟练掌握各种结构体的剖析

ok,现在我们说说第二点,为什么要熟练使用C语言?

上面刚刚那段汇编代码,这样看肯定很难看是不,我们可以把他转换成C语言

这样就好分析多了

尤其是在代码量极大的时候

把汇编转换成等价的C语言代码,是会节省我们很多的分析时间的(不要跟我说有插件)

如果你能独立完成汇编到C语言代码的转换,那么说明第二点你也是合格的了~

比如刚刚那段代码,我们转换一下看看(我喜欢用Linux的C风格)

这里我就不定义各个变量了

# include <stdio.h> int main(int argc, char *argv[]) { // Here is some operational before our code ... // 8Ch = 140d ecx = *(eax + 140); // 88h = 136d eax = eax + 136; edx = *eax; *ecx = edx; // Not list return 0; }

可能这样写出来有些同学还是一脸懵逼,这和看汇编差不多啊

但是有些逆向分析的时候,出现的结构体什么的,用汇编分析那就是一连串的地址变地址

如果写成C语言的形式

那就是看上去清爽多了

3. 要了解基本的Win32编程和Linux编程

比如恶意代码调用了哪个库,不需要记住每个Windows的API,但是你要知道哪里去查

比如Windows呢就是MSDN

如果是Linux呢,就是man

当然,对于逆向来说,最重要的还是长期坚持不懈的努力和知识的积累

在逆向的世界里,不管你是Java很6,或者是Python很6

只要你是第一次接触逆向的话,都是一样的起点

除非你C语言很6

啊哈哈哈

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要逆向呢?
    • ok,现在我们说说第二点,为什么要熟练使用C语言?
    相关产品与服务
    网站渗透测试
    网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档