首页 > 其他分享 >【加密与解密】第二章③

【加密与解密】第二章③

时间:2023-01-02 15:56:08浏览次数:35  
标签:文件 加密 符号 解密 DLL 模块 第二章 断点 调试

表达式

调试中也经常需要查看内存地址或者反汇编地址,这些地址一般通过一些表达式参与计算来获得。其中复杂表达式由基本元素与“(”“)”“】”“【”“+”“——”“^”“|”等符号组合。MDG支持的表达式如下

调试

MDG支持多种调试,有之前学的启动一个进程,有附加到一个进程,还有调试DLL模块,调试服务,调试一段独立的shellcode,也支持子进程调试。

1.调试服务

文件->调试进程,选择服务。

2.调试shellcode

解释:shellcode是一段利用软件漏洞而执行的代码。shell:因为大部分计算机使用者无法也没必要直接接触内核来使用计算机,那么就需要一层代理来连接用户和系统操作内核,在linux中这个就是shell。
在安全研究人员要编写或者分析一段独立代码时,这个功能比较有用。若没有这个功能,研究人员就需要在VC等开发环境下建立一个工程,对Shellcode进行调用。

3.调试DLL

对软件进行研究时候,时常发现需要分析的功能位于某个DLL的输出函数中。MDG支持打开DLL进行调试,并允许直接调试DLL的输出函数。如果正在被调试程序允许中,并且要在特定的DLL模块被加载时终端在模块入口,就单击选项,调试菜单项,选择“在模块载入时停止在模块入口处”。

4.调试子程序

若果碰到了被调试程序在中途启动了一个子进程,需要从入口处调试子进程,MDG可以解决子进程调试的问题。选项,调试菜单项,选择“调试子进程”,那么在子进程在被创建或者启动的时候,MDG会自动启动并开始对子进程调试。

断点

MDG支持普通断点,硬件断点,内存断点,消息断点,模块断点。
其中除了模块断点,其余断点在第二章①中学过了。
模块断点:用于在程序执行到某个模块的代码空间时设断。我们常常不知道程序会在何时调用某个DLL模块,就可以设置模块断点来解决。

其他功能

1.内存搜索

可以直接在输入框输入普通字符串或者十六进制字符,指定内存进行搜索。

2.脚本

有强大的脚本引擎,对于复杂或者繁琐的操作时,可以由脚本自动执行。

3.跟踪

会记录某些函数或者地址被执行。

4.插件

有利于用户的二次开发。

WinDbg

WDG是Windows平台一款强大的用户态和内核态调试工具,是微软的免费调试器。不仅可以调试应用程序还可以完成内核调试,分析崩溃转储文件等工作。
WDG功能十分强大,支持平台包括x86,IA64,AMD64。

windbg的安装与配置

1.版本选择

总结来讲就是x86适用性更高,x64实在其平台上处理文件要用x86版本。

2.工作空间

在WDG开始调试的时候,会建立一个默认的工作空间。使用工作空间workspace来描述项目的属性,参数及设置等信息,相当于集成开发环境的系项目文件。

3.调试符号

调试符号对调试器的工作而言非常重要,可以让使用者了解被调试模块的更多内部信息,例如内部函数名,变量名,结构体的定义等。如果没有调试符号,使用者就只能看到输出表中的函数名称。
目前使用最多的符号文件的就是PDB符号文件,它通常与对应的二进制文件同名,由C/C++编译过程中产生,每个PDB文件都有根据编译时间编译器版本等因素生成的唯一33位特征签名。
用户可以制定一个或者多个目录存放符号文件,用环境变量path来指向这些目录的位置。这样wdg启动时就会自动到目录中搜索符号文件。操作系统经常升级会导致系统中很多某爱的实际版本与发布的符号文件无法匹配,因此,实际使用者中是根据使用的模块版本访问微软提供的符号服务器下载。
调试时,使用命令“ld”从符号文件目录或者符号服务器加载符号,并使用如下方法观察模块符号文件。

使用符号前要了解符号的表示方式。WDG一般表示为“模块名!符号名”。例如kernel32.dll有一个OpenProcess函数,可以将其表示未“kernel32!OpenProcess”。例外是操作系统的内核模块,他有不同的版本和名字,例如ntoskrnl.exe,ntkrnlpa等。使用其中的符号时,可以使用nt这个符号名例如“ntdll!NtOpenProcee”“nt!NtOpenProcess”分别表示ntdll.dll中的NtOpenProcess函数和内核模块中的NtOpenProcess函数,这是不同的函数。如果不加上指定模块名,俺么wdg就会尝试在所有已加载的模块所对应的符号文件中搜索,会降低搜索的效率,所以最好加上模块名前缀。
在有符号文件支持下,WDG支持源代码调试,需要源文件和WDG在同一系统。

标签:文件,加密,符号,解密,DLL,模块,第二章,断点,调试
From: https://www.cnblogs.com/Corax0o0/p/17019876.html

相关文章

  • 【加密与解密】第二章②
    加载程序OllyDbg有两种方式加载目标程序调试,一种是通过CreatProcess创建进程,另一种是利用DebugActiveProcess函数将调试器捆绑到一个正在运行的进程上。1.利用CreatProce......
  • 【加密与解密】第二章①
    2.1OllyDbg调试器OllyDbg界面C窗口是最重要的窗口,绝大部分都要在这个窗口进行,有五个面板窗口,分别是反汇编面板,寄存器面板,信息面板,数据面板和栈面板。1.反汇编面板窗口......
  • 【加密与解密】第一章
    1.2文本字符具体已经在王爽老师《汇编语言》中学习过。本节主要介绍字符集和字节存储顺序。ASC2与Unicode字符集罗列了用十六进制数(Hex)和十进制(Dec)表示的部分常用的asc......
  • buuctf 一眼就解密 看我回旋踢
    Base64 是一种基于64个可打印字符来表示二进制数据的表示方法,由于2^6=64,所以每6个比特为一个单元,对应某个可打印字符。Base64 常用于在通常处理文本数据的场合,表示......
  • buuctf URL解密 摩丝
    URL编码/解码详解当URL路径或者查询参数中,带有中文或者特殊字符的时候,就需要对URL进行编码(采用十六进制编码格式)。URL编码的原则是使用安全字符去表示那些不安全的字......
  • 加解密与HTTPS(3)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~  除了对称加密算法和非对称加密算法,再就是最后的一种加密算法了:不可逆加密算法。对称加密算法和非对称加密算法在......
  • 《程序是怎样跑起来的》第二章
    根据IC的特性,我们知道了计算机的信息数据是用二进制表示的,最小处理单位是位(bit),计算机处理信息最基本的信息计量单位便是8位二进制也称为一个字节。然后就是位移运算表示将......
  • 加密行业复苏需要信任危机的解决方案!漫漫前路必定充满坎坷!
       2022年过后,加密行业从业者需要做更多的工作,让持怀疑态度的用户放心,他们可以投资加密货币,而不用担心他们的资金会丢失。虽然必须解决不计后果的首席执行官们的破坏......
  • 密码学——凯撒加密
    古典加密方案,通过对字符简单的增加x,来进行加密。免杀使用的时候,顺手可以加个亦或进去,增加点复杂度。#pragmaonce#include<stdio.h>voidCaesar_Encryption(unsigned......
  • 全文检索工具solr:第二章:安装配置
    linux安装Solr:可以参考全文检索工具elasticsearch:第二章:安装配置配置类似点击下载solrwindows中Solr安装1:安装Tomcat,解压缩即可。2:解压solr。3:把solr下的dist目录......