逆向工程恶意软件是网络安全学科中最高级别的技能之一,它的薪资反映了其在网络安全生态系统中的地位的提升。它需要多年的勤奋学习才能熟练掌握。恶意软件逆向工程在整个网络安全中被用作解开恶意软件运作秘密的方法,并提供归因的线索。
在第一部分时,我们简单学习和了解了Ghidra,这是由美国国家安全局(也称为 NSA)发布的开源逆向工程工具。在本教程中,我们将开始使用它来破解一些简单的软件,以帮助你熟悉这个出色的工具。
第一步,当然是启动 Ghidra,启动一个项目并打开一个文件。
练习程序下载:https://github.com/Maijin/radare2-workshop-2015/tree/master/IOLI-crackme
下一步是转到Symbol Tree,如下所示并展开导出(请记住,导出的函数是暴露给其他模块供自己使用的模块。要使用其他模块导出的这些函数,模块必须先导入它们) .
你应该在那里找到一个标记为 _mainCRTStartup 的函数。
当你单击它时,它将在反编译窗口中打开其代码,如下所示。
双击mingw_CRTStartup()函数跟进
在第30行左右可以看到主函数。
双击跟进,展开_main 函数
这些就是程序执行时打印的语句
在printf语句下方,我们看到了 scanf 语句。这表示会从键盘接收用户的输入并将其放入名为local_lc的变量中。
在第 14 行,代码对第 13 行中捕获的字符串变量进行字符串比较 (_strcmp),并将其与数字进行比较。
这串数字可能是密码。如果两个字符串相同,字符串比较命令将返回 0,如果它们不同,则返回 1。
然后将比较结果的值被放入标记为iVar1的变量中,该变量在第 5 行 (int iVar1) 中被声明为整数变量。
在下一部分(第 15-22 行)中,代码检查 iVar1 中的值是等于 0 还是 1。如果等于 0,则打印Password OK:并验证用户。如果等于 1,则打印Invalid Password!,并退出程序。
运行尝试
Ghidra 能够破解这个简单的crackme,使我们能够发现代码中的密码。接下来我们将破解越来越难的软件,并利用 Ghidra 的功能来揭开它们的秘密!
本文由合天网安实验室编译,如需转载,请注明来源
留言与评论(共有 0 条评论) “” |