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

【加密与解密】第三章⑦

时间:2023-01-10 14:12:18浏览次数:56  
标签:文件 第三章 代码 解密 hiew 反汇编 file 加密 IDA

其他功能

1.图形化功能

这种模式比文本模式的可视性更好,用户更容易看清函数的代码流程。通过空格切换文本模式或者图形化模式。

2.修改可执行文件

使用IDA可以直接修改二进制内容。edit-patch program打开菜单再change byte和changeword菜单项以十六进制修改数据。

3.加载符号文件

load file-pdb file加载dbg和pdb文件。这个功能对系统软件十分强大,一旦接入网络,IDA就会自动加载目前最符合当前文件版本的符号文件。

4.API帮助关联

将idagui.cfg中的helpfile指向本地Windowsapi帮助文件,当用户分析文件看不到熟悉的API,只要选中某个API并按ctrl+F1快捷键。

5.输出文件

可通过file-produce file调用。可以用map,asm,LST,EXE,dif等输出文件。

MAP文件

是一个文本文件,记录了程序调用的函数等符号信息。

asm文件

仅输出汇编代码部分,每行代码之前都有地址。

dump database to IDC file命令

这项命令用于将当前IDA的数据变化记录到IDC文件中,供恢复当前数据时使用。每个版本都有各自的数据格式且互不兼容。利用该命令,可以将低版本的工作记录转换到高版本。首先在低版本用这个命令输出一个IDC脚本文件。再在高版本中重新装载和分析原文件,完成后按f2打开IDC脚本并执行。

dump typeinfo to IDC file命令

主要用于将一些用户自定义的数据类型保存到IDC文件中去。

小结

IDA提供专业的反汇编能力外还提供了相当优秀的辅助功能例如制作流程图和动态调试。IDAPRO是目前最好的反编译器,像一个智能的反汇编工具,改变了反汇编的方法。IDA从对程序代码进行反汇编开始,分析程序流程,变量和函数调用。

十六进制工具

常用的十六进制工具有hexworkshop,winhex,hiew等,它们各有特色;hexworkshop提供文件的比较功能,winhex可以查看内存映像文件,hiew可以再汇编状态下修改代码。本节主要将如何用hiew修改pe文件的指令代码,一般的修改用ODG和IDA就可以完成。

安装

支持x86-64指令集,将hiew压缩包解压到指定目录就可以完成安装,为了方便使用,可以配置hiew.ini文件。

startmode默认设置是Text,建议将其设置为code,这样一进入hiew就会自动切换代码界面。

修改指令

用hiew打开实例文件。按enter将在文本,十六进制和汇编代码中切换。
切换到汇编代码模式,文件将以反汇编代码的形式显示,用户可以在汇编状态修改和分析程序,这是hiew最强大的地方。

1.为文件增加水平和垂直滚动条

滚动条的显示是由createwindowex函数的样式参数控制的,具体参数及用法可以查阅api手册。用ida反汇编后,可以再输入表窗口查找createwindowexA双击来到代码处

要想显示滚动条,只要在dwstyle参数上加上ws_hscroll和ws_cscroll这两个是,打开vc开头文件可以看到这两个值的初始值

2.加载数据块

此功能可以对数据或者代码进行一些简单的加解密运算。用hiew打开3.3.16提到的encrypted程序,在十六进制或者代码模式下按F3进入编辑状态。在按F7进入加密模式界面,再按enter输入指令,如图所示可以在byte word dword格式当中切换。

因为指令代码不支持跳转命令。所以要用loop指令替代。含义是jmp/stop。rol/ror指令要求两个操作符大小相等。32位寄存器不支持div,mul指令,AL,AX,EAX寄存器存放的是待转运的数据。

静态分析技术应用实例

解密初步

现在的软件一般采用人机对话模式。从提示信息入手就可以找到要害。
我们用IDA进行反汇编,文件不到,很快找到代码处

找到这里,这就是绕过判断的关键,要想让程序接受任何注册码,只要将jne改成je或者nop就可以了。
所以我们启动ida。打开程序跳转到关键代码处,通过patch program-assemble进入汇编修改状态进行修改,如图所示

在patch program-apply patches to input file保存修改,这个时候输入任何序列号就能成功,这也就是我们俗称的爆破法。
这个例子的算法核心内容就是将用户输入的序列号和参照值比对。

参照值一般会存储在程序中。大多数情况,编译器会将初始变量放在数据区块当中。用十六进制打开文件,会发现有数字9981,这就是正确密码

所以在编写这个算法的时候也是同理,不要直接显示明显的提示信息。

逆向工程初步

文中给出一例并且提了要求。

1.移除mission failed对话框

打开ida进行反汇编,查看strings窗口,双击这串字符串转到字符串代码处,双击后面的交叉参考,跳转到调用这个字符串的代码处

按照要求用nop代替这里的代码就可以了

2.将输入的字符显示到对话框中

用于编辑字符的函数有getwindowstext等。在ida中,输入输出等函数显示在Name中。在name窗口双击getwindowtextA函数来到调用出,会发现有两处调用了这个函数,有一处比较可疑,具体如图。

这要经00401211h的指令nop掉就可以了。

3.修改字符

用hexworkshop或者hiew查找字符not reversed改成“-Reversed-”把“good number”改成“good serial”,把“bad number”改成“bad serial”最后找到一地方存放pediy就行。

4.完成序列号验证

编写检测序列号的代码,一个比较好的地方时00401270h处,这是原来的算法代码空间

标签:文件,第三章,代码,解密,hiew,反汇编,file,加密,IDA
From: https://www.cnblogs.com/Corax0o0/p/17040143.html

相关文章

  • Golang实现16/32位MD5加密
    转自:Golang实现16/32位MD5加密packagemainimport( "crypto/md5" "encoding/hex" "fmt")//返回一个32位md5加密后的字符串funcGetMD5Encode(datastring)stri......
  • MySQL必知必会第三章-使用MySQL
    使用MySQL链接为了链接MySQL需要以下信息:主机名(计算机名)——如果连接到本地MySQL服务器,为localhost;端口(如果使用默认端口3306之外的端口);一个合法的用户名;用户口令(如......
  • 记录一下 php解密java的问题
    使用大佬的:https://github.com/lpilp/phpsm2sm3sm4php版本国密意见问题:在判断椭圆点的时候x,y报错。发现java部分的问题在于/***分解加密字串*(C1=C1标志位2位+C1......
  • SimpleAdmin手摸手教学之:国密加密
    一、什么是国密加密二、国密实现本系统实现了国密SM2和SM4加解密,可以在SimpleAdmin.Core下的Utils->Cryptogram文件夹下找到。2.1SM2Sm2加解密需要配置公钥和私钥,在......
  • java SSL加密传输
    网络传输是存在风险的,因此对服服务端和客户端进行安全校验和传输信息的加密就显得非常的重要。上面一句有点拗口,简单解释如下文: 当客户使用SSL向站点服务器发送请求时......
  • 简单聊聊数据脱敏与数据加密
    数据的脱敏与加密在数据安全领域极为重要,也是大数据平台、数据中台建设中不可缺少的一环,我将以数据脱敏与数据加密的特征以及区别、方法论来进行研究学习。一、数据脱敏与......
  • 【加密与解密】第三章⑥
    IDA调试器IDA支持调试器功能,弥补了静态分析能力的不足。1.加载目标文件在Debugger-selectdebugger中可以根据当前文件类型选择调试器类型,如图所示选择win32debugger......
  • stunnel加密通道使用实践
    今天用了半天的时间把内网与外网服务器代理加密通道调通了。以后就可以以外网服务器的IP地址来访问网站了。下边是今天架设通道的经验总结,stunnel服务器端安装及设置我的服......
  • jar包简单加密———第二章:xjar
    仓库源码:[XJar]  https://github.com/core-lib/xjar第一种方法:1、pom配置<!--设置jitpack.io插件仓库--><pluginRepositories><pluginRepository......
  • C#-XML文件及字符串的加密解密代码
    先看XML文件的加解密,例如在桌面有个Student.xml文档,包含学生信息,需进行加密处理:开始代码,添加命名空间引用:usingSystem.Security.Cryptography;usingSystem.Security.......