热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

反汇编代码里面的地址_恶意代码分析之对抗反汇编技巧入门

在做恶意样本静态分析的时候会有一些样本,使用对抗反汇编的方法,一般的对抗反汇编的方法就是加壳,这里我就不介绍了,我这里说两个

在做恶意样本静态分析的时候会有一些样本,使用对抗反汇编的方法,一般的对抗反汇编的方法就是加壳,这里我就不介绍了,我这里说两个比较简单的对抗反汇编的方法,一种使用:无效指令,一种使用:花指令。

使用无效指令,对抗反汇编,使用IDA打开恶意样本之后,如下所示:

c24551328d0056d015d7691d3133610f.png

00401010处的CALL指令,跳转到一个错误的地址处,很明显是IDA解析出了问题,我们可以看看它的机器码:

880d31dbff5dcf441ba5a71249d3fe7b.png

相应的机器码:

E8  8B 45 0C 8B

E8  8B 45 0C 8B

这里要注意一下这个E8指令,它是一个CALL指令,我们再看它前面的指令

jz short near ptr loc_401010+1

意思是跳转到下一条指令,我们需要E8这条指令转化为数字,如下:

65d3be3c7195f05256098fdb8707ac3a.png

然后前面的jz指令跳转到了00401011的位置,我们重新把这条指令的机器码转化为代码,如下:

5c12524f11fe9a137c9fcbc9ce274f2b.png

同样将下面的代码中的E8指令过滤掉,然后转化为代码如下:

79889831bc9f98f0fcc40c6116592c29.png

使用花指令,对抗反汇编,我们先写一个简单的程序,如下:

ec670268b5a783960c70813c8b3cbf80.png

编译之后用IDA打开程序,很容易就看出程序的代码,如下:

6a78a4d7293974ab43d79225f7ad83a0.png

然后我们修改一下程序,加一些简单的跳转和垃圾代码,如下:

4f80fd689e82da5dc4c4f4b39a035e55.png

编译完之后,拖到IDA里显示如下:

98fc413fb3f856b7c5e66dab2f29447e.png

会多出一些流程跳转,分支判断的显示,如果程序比较大,而且里面包含的这样的跳转比较多,就会给分析人员分析增加复杂度,以上两种方法只是简单的反对抗汇编,最直接有效的方式,当然是写个壳,然后把整人PE文件包裹起来,这样用IDA打开之后,就全是壳代码,无法解析,只能动态调试解壳之后,才能静态分析。




推荐阅读
  • Node.js模块化的优势及实践
    本文探讨Node.js模块化的重要性和具体实现方式,包括其带来的代码复用性增强、可维护性提升、以及如何有效避免命名冲突等问题。 ... [详细]
  • 本文档提供了首次周测的答案解析,涵盖特殊符号、命令作用、路径说明以及实战练习等内容。 ... [详细]
  • 本文详细介绍了使用dex2jar和jd-gui工具反编译Android应用(APK)以查看其源代码的具体步骤。通过更改文件扩展名、解压文件、转换dex文件为jar文件,并使用JD-GUI查看最终的Java源代码。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 本文档旨在提供C语言的基础知识概述,涵盖常量、变量、数据类型、控制结构及函数定义等内容。特别强调了常量的不同类型及其在程序中的应用,以及如何正确声明和使用函数。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • Linux内核中的内存反碎片技术解析
    本文深入探讨了Linux内核中实现的内存反碎片技术,包括其历史发展、关键概念如虚拟可移动区域以及具体的内存碎片整理策略。旨在为开发者提供全面的技术理解。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 页面预渲染适用于主要包含静态内容的页面。对于依赖大量API调用的动态页面,建议采用SSR(服务器端渲染),如Nuxt等框架。更多优化策略可参见:https://github.com/HaoChuan9421/vue-cli3-optimization ... [详细]
  • 利用Python在DragonBoard 410c上解析GPS数据获取位置信息
    本文介绍了如何在DragonBoard 410c开发板上使用Python脚本来解析GPS报文,从而获取精确的位置信息。DragonBoard 410c集成了GPS、Wi-Fi和高性能GPU,非常适合用于各种物联网项目。 ... [详细]
  • 深入解析 RuntimeClass 及多容器运行时应用
    本文旨在探讨RuntimeClass的起源、功能及其在多容器运行时环境中的实际应用。通过详细的案例分析,帮助读者理解如何在Kubernetes集群中高效管理不同类型的容器运行时。 ... [详细]
  • 本文详细介绍了如何在Vue项目中集成和配置XGPlayer视频插件,包括安装步骤、基本配置以及常见问题的解决方法。 ... [详细]
  • 利用Git GUI将本地项目同步至GitHub的方法
    GitHub作为开发者不可或缺的工具,不仅提供了丰富的开源项目资源,还极大地便利了个人项目的管理和版本控制。本文将详细介绍如何使用Git GUI工具将本地开发的项目上传至GitHub。 ... [详细]
  • 通过几个简单的设置调整,可以显著提高手机的运行速度,让您的设备像刚买时一样流畅。 ... [详细]
author-avatar
mobiledu2502884633
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有