zoukankan      html  css  js  c++  java
  • 第五章——演示版保护技术-序列号保护方式

    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
  • 相关阅读:
    BZOJ 1568: [JSOI2008]Blue Mary开公司
    BZOJ 3165: [Heoi2013]Segment
    BZOJ 2733: [HNOI2012]永无乡
    BZOJ 4631: 踩气球
    BZOJ 4530: [Bjoi2014]大融合
    BZOJ 4919: [Lydsy1706月赛]大根堆
    BZOJ 5442: [Ceoi2018]Global warming
    BZOJ 4027: [HEOI2015]兔子与樱花
    BZOJ 5441: [Ceoi2018]Cloud computing
    php的抓取
  • 原文地址:https://www.cnblogs.com/Tempt/p/10119366.html
Copyright © 2011-2022 走看看