恶意软件逆向工程:Ghidra 入门 -第二部分

逆向工程恶意软件是网络安全学科中最高级别的技能之一,它的薪资反映了其在网络安全生态系统中的地位的提升。它需要多年的勤奋学习才能熟练掌握。恶意软件逆向工程在整个网络安全中被用作解开恶意软件运作秘密的方法,并提供归因的线索。

在第一部分时,我们简单学习和了解了Ghidra,这是由美国国家安全局(也称为 NSA)发布的开源逆向工程工具。在本教程中,我们将开始使用它来破解一些简单的软件,以帮助你熟悉这个出色的工具。

# 1、打开Ghidra

第一步,当然是启动 Ghidra,启动一个项目并打开一个文件。

练习程序下载:https://github.com/Maijin/radare2-workshop-2015/tree/master/IOLI-crackme

image-20220722142444866

# 2、查找导出

下一步是转到Symbol Tree,如下所示并展开导出(请记住,导出的函数是暴露给其他模块供自己使用的模块。要使用其他模块导出的这些函数,模块必须先导入它们) .

image-20220722144353658

你应该在那里找到一个标记为 _mainCRTStartup 的函数。

当你单击它时,它将在反编译窗口中打开其代码,如下所示。

image-20220722144820197

双击mingw_CRTStartup()函数跟进

image-20220722144903591

image-20220722145038886

在第30行左右可以看到主函数。

# 3、展开 _main 函数

双击跟进,展开_main 函数

image-20220722145408964

image-20220722145426443

这些就是程序执行时打印的语句

image-20220722145538949

image-20220722150912374

printf语句下方,我们看到了 scanf 语句。这表示会从键盘接收用户的输入并将其放入名为local_lc的变量中。

image-20220722151101963

在第 14 行,代码对第 13 行中捕获的字符串变量进行字符串比较 (_strcmp),并将其与数字进行比较。

image-20220722151230333

这串数字可能是密码。如果两个字符串相同,字符串比较命令将返回 0,如果它们不同,则返回 1

然后将比较结果的值被放入标记为iVar1的变量中,该变量在第 5 行 (int iVar1) 中被声明为整数变量。

在下一部分(第 15-22 行)中,代码检查 iVar1 中的值是等于 还是 1。如果等于 0,则打印Password OK:并验证用户。如果等于 1,则打印Invalid Password!,并退出程序。

image-20220722151843183

运行尝试

image-20220722152644935

# 本节概括

Ghidra 能够破解这个简单的crackme,使我们能够发现代码中的密码。接下来我们将破解越来越难的软件,并利用 Ghidra 的功能来揭开它们的秘密!

# 说明

本文由合天网安实验室编译,如需转载,请注明来源 原文地址:Reverse Engineering Malware: Getting Started with Ghidra, Part 2 (hackers-arise.com)

关于合天网安实验室

合天网安实验室(www.hetianlab.com)-国内领先的实操型网络安全在线教育平台

真实环境,在线实操学网络安全 ; 实验内容涵盖:系统安全,软件安全,网络安全,Web安全,移动安全,CTF,取证分析,渗透测试,网安意识教育等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值