nag在逆向中是什么意思

编程入门 行业动态 更新时间:2024-10-09 17:24:09

<a href=https://www.elefans.com/category/jswz/34/252696.html style=nag在逆向中是什么意思"/>

nag在逆向中是什么意思

程序①

打开程序

随意输入用户名密码

出现错误字符

目标:得到该程序的相关序列号和了解序列号计算过程

载入od

在od中右键查找相关字符

容易发现输入正确后的字符串

可双击字符进入字符所在的messageBox输出函数

同时向上翻找计算流程

出现一段循环推测可能为计算序列号

再向上翻找

出现两段GetDlgItemTextA函数,为对应两个输入框

寻找关键函数也可以通过对GetDlgItemTextA函数下断点进行调试来寻找

此处为command 框

输入:bp + (关键函数名,此处为GetDlgItemTextA)可以下断点

然后alt + F9 从系统领空返回

继续进行调试

该段判断密码是否为空

观察流程可以大概知道计算结果存储于ESI中,后面于403138数据段(存储输入信息)的值比较来决定跳转

可以将计算得知的ESI数据的值从message中输入来得知序列号

修改代码为

这样来实现将计算出来的ESI值存储在未使用的数据段439000,然后利用messageBox输出

保存代码进行查看

出现乱码

进入439000数据段查看

此时ESI存储的值为6A248

对进行流程进行分析

输入的用户名为abcd 序列号为123456

sar也可以理解成对a的整除

在此基础上可以改进算法为 2aa+(a*a/2 +3)a-a 化简为 a(1/2 a+1)(a+2)

如此循环四次

可利用其他语言进行计算

#include

main()

{

int i, result = 0;

char a[] = "abcd";

for( i=0; i < 4; i++ )

{

result += a[i]*a[i] + (a[i]/2+3)*a[i] - a[i];

result *= 2;

}

printf("%d\n", result);

}

输出为十进制434760转换为十六进制6a248

测试成功

程序②

打开程序

出现一个nag窗口

点击确定

出现主体

将程序载入PEiD

显示该程序无壳为MASM编写的

载入od

发现下方出现nag窗口相关的字符串

尝试在call处下断点并单步调试

发现程序在此处运行且下方messagebox函数未使用

证明下方函数无实意

进入call函数内查看

发现函数内od分析出现异常

尝试先关闭分析

第一张为调试前的代码,第二张为调试后的代码,可以观察出经过运行代码自身出现了变化,同时出现了nag窗口的ASCII

将od分析去除进行分析

接下来对代码进行分析

先call调用GetModuleHandleA函数返回eax400000,然后存放在403130位置,再将401011存放在edi

进入第二个call

函数将eax赋值401000

然后对401000处的代码与5A进行异或,然后eax自增

在BeginPaint处记载对代码修改的位置

在这个函数中程序对自身进行了修改

明确此函数作用后继续分析下一个call

进入第二个call

首先清空eax的值

同此时edi的值为401011

程序运行到mov后开始修改自身此段代码

运行至下一个call前程序自身出现了修改

od分析后出现一段带有乱码的messagebox函数

继续分析

call的地址是edi的401000,为已经修改后的代码

此部分再次出现异或语句,解密的范围为403000到403128

同时观察到下方乱码的位置同样在解密的范围内

调试跳出循环

乱码内的字符已被解开

继续调试跳出nag窗口

点击确定回到od

回到od后jmp跳转至此处,发现程序对edi的值401011代码继续进行修改,然后调用edi的值

进行下一步跳转

在下一个call处出现主体部分

关闭主体部分后 jmp跳转至下一个部分

进入该call查看

发现此处对nag的窗口继续进行修改

在数据窗口进行观察

修改后

可见程序对nag窗口部分在结束处继续加密来防止查找字符串发现

后面结束程序

整理程序前两步加解密思路:

①401000到401218 xor 0x5A

②401011到401025 修改代码

若直接修改代码在出现nag的messagebox则在前两步对代码进行修改中会发生变化

则应该让前两步修改代码后达到去除nag的目的

目的为在此处修改代码

返回第二步寻找修改的代码

观察edi的值得知此为修改处

数据窗口中跟随

找出此处为401039

需要让00 最后显示为01

根据加密规则 需要输入5b xor 5a = 01

保存修改

测试成功 nag窗口被去除

同理可以修改指令为jmp来跳过messagebox

更多推荐

nag在逆向中是什么意思

本文发布于:2024-02-13 16:27:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759401.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:nag

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!