第五章——演示版保护技术-序列号保护方式

1.获取序列号的思路:
  • 根据输入注册码后,软件通常会在缓存区内获取输入的信息进行比较,我们可以找到注册码的地方,进行跟踪比较。常用的API有:GetWindowText, GetDIgItemText, GetDlgItemInt,
  • 也可以根据显示对话框,告诉用户是否正确,这样可以根据这一点栈回溯查看注册码 ,这样的API:MessageBox ShowWindow CreateDiaologParamA,CreateDialog,IndirectParamA
  • 还有一种思路,可以根据序列号存在的位置,有的序列号会放在注册表中,例如RegQueryValueExA 。如果序列号存再INI文件中,可以使用GetPrivateProfileString、GetPrivateProfileIntA、GetProfileString。 如果序列号存在普通的文件中,可以使用CreateFile _lopen
 
2.数据约束性——大多数的序列号会在某个时刻存放在内存中,数据约束性就是根据这一点,多数情况下存放在用户输入的序列号±90h字节的地方,我们可以根据OD来查看内存,联系上下文可以查看到真正序列号
 
3.利用提示信息:在OD或者IDA(shift+F12)中,查看对应的ASCLL或者Unicode字符串来定位到关键代码附近进行序列号回溯
 
4.字符串比较形式:
        序列号分析时候,加密者会有效防止解密者修改跳转指令,会采取一些技巧,迂回的比较字符串
  •  寄存器直接比较
            mov  eax   [   ]
            mov  ebx   [   ]
            cmp  eax, ebx
            jz XXX
 
  • 函数比较
            call XXXXXX
            test  eax, eax
            jz xxx    
            函数比较通常查看返回值(大部分BOOL类型)
 
  •     串比较
            lea edi  [  ]
            lea esi   [  ]
            repz  cmpsd
            jz  XXX

转载于:https://www.cnblogs.com/Tempt/p/10119366.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值