逆向学习笔记02——时间验证

逆向学习笔记——验证

验证类型:

  1. 本地验证

(1)     文件验证:后缀为 .int ; .dat ; .dll

(2)     实践验证:系统时间

(3)     注册表

(4)     DEMO

(5)     ……

  1. 网络验证

 

(1)     C/S架构(Client/Server)    客户端/服务端

(2)     B/S架构(Browser/Server) 浏览器端/服务端

(3)     基于TCP/IP协议      手机验证 密保

关键跳(Magic Jump)

 

破解程序:

  1. 修改HEX
  2. 修改汇编指令

 

 

练习实例:

 MFC编写小段时间验证程序:

// TIME验证.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>

int main(int argc, char* argv[])
{
    SYSTEMTIME tagOldTime = {0};
    SYSTEMTIME tagNewTime = {0};

    // 获取程序运行时的当前时间.
    GetLocalTime(&tagOldTime);


    // 死循环,不停的判断. (假的死循环)
    while(TRUE)
    {
        // 实时获取当前时间.
        GetLocalTime(&tagNewTime);

        printf("%d年%d月%d日  星期%d  %d:%d:%d:%d\r\n",
                tagNewTime.wYear,
                tagNewTime.wMonth,
                tagNewTime.wDay,
                tagNewTime.wDayOfWeek,
                tagNewTime.wHour,
                tagNewTime.wMinute,
                tagNewTime.wSecond,
                tagNewTime.wMilliseconds);

        // TIME验证
        if(tagOldTime.wMinute + 1 <= tagNewTime.wMinute)
        {
            MessageBox(NULL, "本次的使用时间已经到期", 
                       "NULL", MB_ICONERROR);

            return 0;
        }

        // 暂停时间(睡眠)
        Sleep(1000);
    }


    return 0;
}

 

破解方法:

  1.找到关键跳

 

  2.破解

    1)修改HEX

      7E 0C ==> 90 90

  

    2)修改汇编指令

      jle short 004010D8 ==> nop

      

2016-04-06 17:26:41

posted @ 2016-04-06 17:28  Stone学技术  阅读(206)  评论(0)    收藏  举报