zoukankan      html  css  js  c++  java
  • Creckme_Andrnalin.4

    运行一下程序

    程序的界面还是很简单的,用按钮输入serial,在旁边的status栏则可以看到serial是否正确。

    然后用die查一下:

    还是VB,无壳。

    尽然是vb,那我们还是使用一下VB的静态工具:

    这里我们看到这个控件还是蛮多的,但是大概浏览一下我们可以发现,有重要信息的只有那四个事件控件:

    点进这四个控件分别查看,可以发现其中的一些规律:

    每一段代码都是相似的,除了这个一长串的字符串,看来这些字符串就是密钥了,那么这么多字符串,怎么才能判断哪个才是密钥呢?

    我们看到上面代码的逻辑:

    这里表示,我们输入的码,要变成十六进制,那么我们看到下面的密钥,必须也是十六进制呀,所以这样我么就可以排除一些了。

    最后我们找到了一个满足十六进制的密钥:

    然后我们进入OD查看详细的serial注册过程:

    00406EDC   > /85C0          test eax,eax
    00406EDE   . |0F84 29010000 je Andréna.0040700D
    00406EE4   . |8D4D BC       lea ecx,dword ptr ss:[ebp-0x44]
    00406EE7   . |6A 02         push 0x2
    00406EE9   . |8D55 8C       lea edx,dword ptr ss:[ebp-0x74]
    00406EEC   . |51            push ecx
    00406EED   . |52            push edx
    00406EEE   . |FFD3          call ebx                                    ;  msvbvm60.rtcLeftCharVar
    00406EF0   . |8D45 8C       lea eax,dword ptr ss:[ebp-0x74]
    00406EF3   . |8D4D B0       lea ecx,dword ptr ss:[ebp-0x50]
    00406EF6   . |50            push eax
    00406EF7   . |51            push ecx
    00406EF8   . |FFD6          call esi                                    ;  取假码的前两位
    00406EFA   . |50            push eax
    00406EFB   . |FF15 D8104000 call dword ptr ds:[<&MSVBVM60.#rtcR8ValFrom>;  变为浮点型
    00406F01   . |DD9D 34FFFFFF fstp qword ptr ss:[ebp-0xCC]
    00406F07   . |8D55 9C       lea edx,dword ptr ss:[ebp-0x64]
    00406F0A   . |8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
    00406F0D   . |52            push edx
    00406F0E   . |50            push eax
    00406F0F   . |C745 A4 01000>mov dword ptr ss:[ebp-0x5C],0x1
    00406F16   . |C745 9C 02000>mov dword ptr ss:[ebp-0x64],0x2
    00406F1D   . |FF15 AC104000 call dword ptr ds:[<&MSVBVM60.__vbaI4Var>]  ;  msvbvm60.__vbaI4Var
    00406F23   . |8D4D BC       lea ecx,dword ptr ss:[ebp-0x44]
    00406F26   . |50            push eax
    00406F27   . |8D55 B8       lea edx,dword ptr ss:[ebp-0x48]
    00406F2A   . |51            push ecx
    00406F2B   . |52            push edx
    00406F2C   . |FFD6          call esi                                    ;  msvbvm60.__vbaStrVarVal
    00406F2E   . |50            push eax
    00406F2F   . |FF15 4C104000 call dword ptr ds:[<&MSVBVM60.#rtcMidCharBs>;  取第i位
    00406F35   . |8BD0          mov edx,eax
    00406F37   . |8D4D B4       lea ecx,dword ptr ss:[ebp-0x4C]
    00406F3A   . |FF15 BC104000 call dword ptr ds:[<&MSVBVM60.__vbaStrMove>>;  msvbvm60.__vbaStrMove
    00406F40   . |50            push eax                                    ; /String = 00000001 ???
    00406F41   . |FF15 20104000 call dword ptr ds:[<&MSVBVM60.#rtcAnsiValue>; 取ascii码
    00406F47   . |0FBFC0        movsx eax,ax                                ;  将ascii码当做十六进制储存
    00406F4A   . |8985 F0FCFFFF mov dword ptr ss:[ebp-0x310],eax
    00406F50   . |8D8D 7CFFFFFF lea ecx,dword ptr ss:[ebp-0x84]
    00406F56   . |DB85 F0FCFFFF fild dword ptr ss:[ebp-0x310]               ;  变为十进制
    00406F5C   . |51            push ecx
    00406F5D   . |C785 7CFFFFFF>mov dword ptr ss:[ebp-0x84],0x5
    00406F67   . |DD9D E8FCFFFF fstp qword ptr ss:[ebp-0x318]
    00406F6D   . |DD85 E8FCFFFF fld qword ptr ss:[ebp-0x318]
    00406F73   . |DC85 34FFFFFF fadd qword ptr ss:[ebp-0xCC]                ;  第i位加上前两位
    00406F79   . |DD5D 84       fstp qword ptr ss:[ebp-0x7C]
    00406F7C   . |DFE0          fstsw ax
    00406F7E   . |A8 0D         test al,0xD
    00406F80   . |0F85 D61D0000 jnz Andréna.00408D5C
    00406F86   . |FF15 94104000 call dword ptr ds:[<&MSVBVM60.#rtcHexBstrFr>;  变为十六进制
    00406F8C   . |8985 74FFFFFF mov dword ptr ss:[ebp-0x8C],eax
    00406F92   . |8D55 CC       lea edx,dword ptr ss:[ebp-0x34]
    00406F95   . |8D85 6CFFFFFF lea eax,dword ptr ss:[ebp-0x94]
    00406F9B   . |52            push edx
    00406F9C   . |8D8D 5CFFFFFF lea ecx,dword ptr ss:[ebp-0xA4]
    00406FA2   . |50            push eax
    00406FA3   . |51            push ecx
    00406FA4   . |C785 6CFFFFFF>mov dword ptr ss:[ebp-0x94],0x8
    00406FAE   . |FF15 84104000 call dword ptr ds:[<&MSVBVM60.__vbaVarCat>] ;  链接字符串
    00406FB4   . |8BD0          mov edx,eax
    00406FB6   . |8D4D CC       lea ecx,dword ptr ss:[ebp-0x34]
    00406FB9   . |FFD7          call edi                                    ;  msvbvm60.__vbaVarMove
    00406FBB   . |8D55 B0       lea edx,dword ptr ss:[ebp-0x50]
    00406FBE   . |8D45 B4       lea eax,dword ptr ss:[ebp-0x4C]
    00406FC1   . |52            push edx
    00406FC2   . |8D4D B8       lea ecx,dword ptr ss:[ebp-0x48]
    00406FC5   . |50            push eax
    00406FC6   . |51            push ecx
    00406FC7   . |6A 03         push 0x3
    00406FC9   . |FF15 9C104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeStrL>;  msvbvm60.__vbaFreeStrList
    00406FCF   . |8D95 6CFFFFFF lea edx,dword ptr ss:[ebp-0x94]
    00406FD5   . |8D85 7CFFFFFF lea eax,dword ptr ss:[ebp-0x84]
    00406FDB   . |52            push edx
    00406FDC   . |8D4D 8C       lea ecx,dword ptr ss:[ebp-0x74]
    00406FDF   . |50            push eax
    00406FE0   . |8D55 9C       lea edx,dword ptr ss:[ebp-0x64]
    00406FE3   . |51            push ecx
    00406FE4   . |52            push edx
    00406FE5   . |6A 04         push 0x4
    00406FE7   . |FF15 14104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeVarL>;  msvbvm60.__vbaFreeVarList
    00406FED   . |83C4 24       add esp,0x24
    00406FF0   . |8D85 E8FEFFFF lea eax,dword ptr ss:[ebp-0x118]
    00406FF6   . |50            push eax                                    ; /TMPend8 = 00000001
    00406FF7   . |8D8D F8FEFFFF lea ecx,dword ptr ss:[ebp-0x108]            ; |
    00406FFD   . |8D55 DC       lea edx,dword ptr ss:[ebp-0x24]             ; |
    00407000   . |51            push ecx                                    ; |TMPstep8 = 00000003
    00407001   . |52            push edx                                    ; |Counter8 = 00000006
    00407002   . |FF15 C8104000 call dword ptr ds:[<&MSVBVM60.__vbaVarForNe>; \__vbaVarForNext
    00407008   .^E9 CFFEFFFF   jmp Andréna.00406EDC
    

    这个注册机大概的流程就是:

    先取输入的字符串的前两位组成一个数字,然后把输入的字符串的每一位的ascii码当作十六进制转化为十进制,然后加上这个数字,把最后的结果转化为十六进制,最后拼接到一起后,在最前面加上0.

    比如我输入的(123456789),然后程序会取前两位(12),然后取第一位(1)的ascii当作十六进制存储(0x31),然后再变为十进制(0x31=49),加上前两位变为十六进制(49+12=61=0x3D),然后进行循环,最后把十六进制组成一个新的字符串,再和

    0817E747D7A7D7C7F82836D74747A7F7E7G7C7D826D817E7B7

    进行比较。

    #include <iostream>
    #include <sstream>
    
    using namespace std;
    
    string kb = "0123456789*#";
    int kb_dec[] = { 48,49,50,51,52,53,54,55,56,57,42,35 };
    int kb_hex[] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
    string hexlist = "0123456789ABCDEF";
    int key_num = 2;
    string key = "0817E747D7A7D7C7F82836D74747A7F7E7B7C7D826D817E7B7C";
    
    int hexstr_to_dec(const string s) //转16进制两位字符到十进制数
    {
        int a, b;
        a = hexlist.find(s[0]);
        b = hexlist.find(s[1]);
        return a * 16 + b;
    }
    void main()
    {
        int key_value;
        int base_value;
        string psword;
        char p;
        string key_str = key.substr(1, 2);  //取Key的二、三位
        key_value = hexstr_to_dec(key_str);
    
        for (int x = 1; x <= 9; x++)                //确定公共值base_value                 
        {
            for (int y = 0; y <= 9; y++)
            {
                if (y + x * 10 + kb_dec[x] == key_value)
                {
                    base_value = x * 10 + y;
                    break;
                }
            }
        }
        cout << "公共值:" << base_value << endl;
        for (int x = 1; x < key.length(); x += 2)          /*计算 注册码 部分*/
        {
            key_str = key.substr(x, 2);
            key_value = hexstr_to_dec(key_str);
            p = (char)(key_value - base_value);
            psword = psword + p;
        }
        cout << "password:" << psword << endl;
        system("pause");
        }
    

    这是一个大佬的代码,咱就偷偷懒直接拿来用了0v0

  • 相关阅读:
    Photoshop 2021 for Mac
    viscose live serves 扩展工具更改默认自动打开的浏览器
    UML面向对象分析、建模与设计
    Shell 脚本
    早做打算,不要随遇而安。
    编程人员成长模型
    Spring AOP详解
    Mybatis逆向工程的配置
    Int和String互转的方法
    SQL学习
  • 原文地址:https://www.cnblogs.com/lex-shoukaku/p/13330339.html
Copyright © 2011-2022 走看看