• 标 题:VB anti-loader 2种常用方法介绍 (3千字)
  • 作 者:小楼
  • 时 间:2002-7-13 11:35:34
  • 链 接:http://bbs.pediy.com

VB anti-loader 2种常用方法介绍

    所谓loader,主要指smartceck、wkt vb debugger等。
    从目前VB共享软件的保护情况看,源代码层面主要还是运用二种方法来对抗。
   
  1. 查找特定的窗口标题

  A: 调用vb函数AppActivate语句查找smartcheck窗口并关闭。
      这种方法见于exdec附带教程中的vb crackme anti3.exe
      403937: 27 LitVar_Missing       
      40393A: 3a LitVarStr:              ( local_0094 ) Numega SmartCheck
      40393F: 4e FStVarCopyObj          local_00A4
      403942: 04 FLdRfVar                local_00A4
      403945: 0a ImpAdCallFPR4:          rtcAppActivate
      40394A: 36 FFreeVar
      403951: 63 LitVar_TRUE           
      403954: 1b LitStr:                %{F4}
      403957: 0a ImpAdCallFPR4:          rtcSendKeys
      40395C: 35 FFree1Var              local_00A4
      40395F: 63 LitVar_TRUE           
      403962: 1b LitStr:                %Y
      403965: 0a ImpAdCallFPR4:          rtcSendKeys
      40396A: 35 FFree1Var              local_00A4

AppActivate "Numega SmartCheck"  尝试激活SmartCheck窗口, "Numega SmartCheck"
                                是SC的窗口标题
SendKeys "%{F4}", True          发送ALT+F4关闭smartcheck
SendKeys "%Y", True              发送ALT+Y确定


  B: 用API findwindow查找
    FindWindow('nmscmw50',nil);          //nmscmw50系SC类名
或  FindWindow(nil,'numega SmartCheck');


  2. 时间记数
    通过计算某段代码运行时间来知道有否被load(类似SC、WKT等loader载入目标程序时需要较多时间)
   
        以下代码见于 斗地主 4.6 Build 438

      46B729: 0a ImpAdCallFPR4:  rtcgettimer        // (1)
      ....
      ....
      46BEF0: 0a ImpAdCallFPR4:  rtcgettimer        // (2)
      46BEF5: 6e FLdFPR4               
      46BEF8: af SubR4                              // (2)- (1)
      46BEF9: ea CR4R4                 
      46BEFA: f4 LitI2_Byte:            0x14  20           
      46BEFC: eb CR8I2                 
      46BEFD: dc GtR4                                // >20秒
      46BEFE: 1c BranchF:                46BF05          |
      46BF01: 00 LargeBos                                |
      46BF03: Lead1/c8 End                      结束  <--  YES
      46BF05: 00 LargeBos                        继续  <--  NO
      ....
      ....
      46C34F: 0a ImpAdCallFPR4:  rtegettimer        // (3)
      46C354: 6e FLdFPR4               
      46C357: af SubR4                              // (3)-(1)
      46C358: ea CR4R4                 
      46C359: f4 LitI2_Byte:            0x14  20
      46C35B: eb CR8I2                 
      46C35C: dc GtR4                                // >20秒             
      46C35D: 1c BranchF:                46C364          |
      46C360: 00 LargeBos                                |             
      46C362: Lead1/c8 End                      结束  <--  YES     
      46C364: 00 LargeBos                        继续  <--  NO


    以上只是讲述了常见的VB anti-loader保护方法;然而,通过使用内联汇编(VB中确实可以不完全实现)或者结构化异常技术,完全能实现更强大的anti功能----有兴趣的话不妨试试aming或我的vb crackme。只是因为目前还没有见到有采用类似技术的共享软件,暂时对此保持沉默。