加密与解密笔记-3.5-静态分析技术应用实例

一个小程序,来验证输如的序列号是否正确

在这里插入图片描述

用IDA对程序进行反汇编,这里就是关键代码

在这里插入图片描述

f5反汇编可进行对照

在这里插入图片描述

.text:004010AF                 call    ds:GetDlgItemTextA   //调用输入函数
.text:004010B5                 lea     edx, [esp+14h+String2]
.text:004010B9                 lea     eax, [esp+14h+String]
.text:004010BD                 push    edx             ; lpString2
.text:004010BE                 push    eax             ; lpString1
.text:004010BF                 call    ds:lstrcmpA       //调用比较函数
.text:004010C5                 test    eax, eax
.text:004010C7                 push    0               ; uType
.text:004010C9                 jnz     short loc_4010E8
.text:004010CB                 push    offset Caption  ; "OK!"
.text:004010D0                 push    offset Text     ; lpText
.text:004010D5                 push    0               ; hWnd
.text:004010D7                 call    ds:MessageBoxA
.text:004010DD                 mov     eax, 1
.text:004010E2                 add     esp, 14h
.text:004010E5                 retn    10h

这里调用lstrcopA函数来进行比较,test 的作用是按位与,仅改变标志寄存器的值。这里的test eax,eax 作用是检测 eax是否为空,如果eax为空,则设置zf 零标志位为1,(jne指令,if(zf = 0 )则跳转)

如果想将程序改为接受任何注册码,只需要将jne改为je或者空指令nop

先修改汇编指令,jne指令共两个字节,因此用两个nop代替

在这里插入图片描述
在这里插入图片描述

再将修改保存到文件中

在这里插入图片描述

结果输入任意序列号,均提示注册成功

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ofo300

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值