首页 > 其他分享 >【加密与解密】第三章②

【加密与解密】第三章②

时间:2023-01-05 21:55:06浏览次数:38  
标签:文件 第三章 解密 视图 编译器 反汇编 加密 ida IDA

AsmJit

一个以C++封装的完整的JIT汇编器和编译器,生成兼容x86和x64架构的原生汇编指令。

它与之前的开源库并不一样,他只是一个汇编器,与别的汇编方式也不同,有个例子。

可以见得指令都被封装成了类成员函数,通过调用函数的方式来编码。参数可以使用寄存器,内存操作数,也可以用占位符变量,根据不同的逻辑给这些占位符变量赋值不同的操作数。
上面的例子用的是x86 assembler,还有更高层的x86 compiler(assembler可以看成汇编程序,是基础,而compiler对之进行封装是编译器,引入函数,参数,局部变量,局部空间等类型的定义方式。可通过栈堆,寄存器分配等方式转换成低级别的形式)
它作为有一个汇编器和编译器,可以做出功能强大代码简洁的产品。

Keystone

与capstone是同一系列引擎。cap负责跨平台多指令集反汇编,key负责跨平台多指令集汇编工作。与cap一致,只支持文本汇编,不想ASMJIT那样函数式汇编。
优缺点也和capstone相似,因为进行了很多额外的操作,所以显得臃肿,如果产品需要ARM指令集,key可能是唯一的方便的开源库。

小结

进行了一些比较

静态反汇编

本节介绍常用的反汇编工具机器用法(上一节讲的是引擎)进行反汇编前,先分析检测是否加壳,进行16章的脱壳技术脱壳,在进行反汇编。常用的是IDA PRO属于专家级产品,逆向必备。

IDAPRO简介

是一款交互式反汇编工具,功能强大操作复杂。特性是交互和多处理器。IDA不自动解决程序的问题,但会按用户的指令找到可疑之处。
IDA安装好后会有32和64版本。它支持的文件类型也很丰富,除了常见的pe格式,还支持DOS,Unix,Mac,java,.net等平台的格式。ida也会自己识别。
IDA按区块装载PE文件,例如.text代码块,.data数据块.rsrc资源块.idata输入表edata输出表。ida所消耗时间与复杂程度有关。过程分为两个阶段,一阶段中,将程序代码和数据分开,分别标记函数分析参数调用,分析跳转,指令关系等。第二阶段,若IDA能识别文件编译类型,就能装载对应的编译器特征文件,然后给各个函数赋名。随后创建一个数据库,组建保存在.id0.id1.nam.til这四个文件,关闭ida时,四个文件会存档进一个idb文件。一些tips如下

ida配置

合理配置ida文件可以大大提高效率。如果在options菜单配置ida,则仅对当前有效,新建项目时会恢复配置。要想改变默认配置,需要编辑ida.cfg。用不了记事本编辑,建议editplus,ultraedit等工具配置。
ida.cfg有两部分,一部分定义文件扩展名,内存,屏幕。第二部分配置不同参数比如代码显示格式等等。

1.反汇编选项

这个选项直接控制反汇编窗口的代码显示格式。项目较多,图片如下。

2.ascii字符串与符号

3.显示中文字符

从7.0开始支持中文字符串显示,但需要配置ida.cfg。需要在IDA\CFG目录下新建一个Chinese.clt,内容如下。

IDA主窗口

1.反汇编窗口

有两种形式,分别是图形视图(默认)和文本视图。图形视图中,ida以程序流程图形式显示代码,将函数分解成许多基本块。可以用ctrl+滚轮调整图形大小,空格键可以使图形试图和文本视图之间切换。view-》open subviews-》disassembly可以打开反汇编子窗口,使用多个子窗口来分析同一段代码。

2.导航栏

打开导航栏可以看到加载文件地址空间的线性视图,如图所示。

library function为库函数,data为数据,regular function为规则函数,unexplored为未查过的,instruction为指令,external symbol为外部符号。

3.注释

ida可以允许用户在代码后面输入注释。注释分为“:”enter comment只在注释处出现。“;”enter repeatable comment是在所有交叉参考处出现。如果一个地址有两种注释,只显示非重复注释。

标签:文件,第三章,解密,视图,编译器,反汇编,加密,ida,IDA
From: https://www.cnblogs.com/Corax0o0/p/17027252.html

相关文章

  • QQ音乐文件解密转MP3
    最近想搞个iphone闹钟,用爱思可以不限制在30s.缺mp3文件,所以又要转文件类型,记录一下. (我后来发现可以边放music边介绍天气状况,都不用闹钟了.)具体说一......
  • 为什么需要JS加密来保护你的代码
    防止代码被盗用:通过对代码进行混淆加密,可以使得攻1击者很难通过阅读代码来理解代码的功能和实现细节,从而防止代码被盗用。增强代码的安全性:混淆加密的代码可以更加安全,因为......
  • bouncycastle(BC) 实现SM2国密加解密、签名、验签
    https://www.cnblogs.com/dashou/p/14656458.html SM2国密加解密一个类就够了<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</......
  • AES加密解密算法原理,以及AES有哪些用途?
    AES加密算法是双向加密,它与单向加密MD5摘要算法不同。我们都是知道双向加密是可逆的,存在密文的密钥,AES算法是现在比较流行的加密算法之一。那么,AES加密解密算法原理是什么,主......
  • AES加密解密算法原理,以及AES有哪些用途?
    AES加密算法是双向加密,它与单向加密MD5摘要算法不同。我们都是知道双向加密是可逆的,存在密文的密钥,AES算法是现在比较流行的加密算法之一。那么,AES加密解密算法原理是什么,......
  • AES加密解密算法原理,以及AES有哪些用途?
    AES加密算法是双向加密,它与单向加密MD5摘要算法不同。我们都是知道双向加密是可逆的,存在密文的密钥,AES算法是现在比较流行的加密算法之一。那么,AES加密解密算法原理是什么,主......
  • golang的AES加密
    AES常用的加解密的方式无非三种.对称加密,加解密都使用的是同一个密钥,其中的代表就是AES非对加解密,加解密使用不同的密钥,其中的代表就是RSA签名算法,如MD5、SH......
  • 简单的C#&PHP对称加解密
    byte[]ctxbytes=System.Text.Encoding.UTF8.GetBytes(ctx);byte[]keybytes=System.Text.Encoding.UTF8.GetBytes(key);intctxLen=ctxbytes.Length......
  • go-dongle 0.2.5 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库
    dongle是一个轻量级、语义化、对开发者友好的Golang编码解码和加密解密库Dongle已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/dong......
  • [加密]公钥/私钥/数字签名理解
    公钥,私钥和数字签名一、公钥加密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让......