• Creckme_Andrnalin.2


    首先还是查看文件:

    输入name和key,不输入的话,旁边的OK按钮是不能使用的。

    然后输入假码:

    这个应该不是英文,但是毕竟是假码,所以这个应该是表示的错误。

    然后用die查看一下:

    看到是vb编译,这下我们就要注意一下vb的特点,比如函数的名称,入口处的特点等等

    然后就是od打开:

    我们刚刚搜到了字符串,所以还是查找字符串:

    还是上下查看一下,正确的字符串在哪里:

    我们往上找到了正确的字符和关键跳。

    好到这里就是爆破的过程了,下面我们来找注册机

    根据关键跳,所以我们可以知道关键call也在上面,所以我们还是往上面找:

    首先我们找到一个将我们所输入的字符串的ASCII码相加的循环:

    00402134   . /0F84 9C000000 je Andréna.004021D6
    0040213A   . |8D55 94       lea edx,dword ptr ss:[ebp-0x6C]
    0040213D   . |8D45 DC       lea eax,dword ptr ss:[ebp-0x24]
    00402140   . |52            push edx                                 ;  Andréna.<ModuleEntryPoint>
    00402141   . |50            push eax                                 ;  kernel32.BaseThreadInitThunk
    00402142   . |C745 9C 01000>mov dword ptr ss:[ebp-0x64],0x1
    00402149   . |895D 94       mov dword ptr ss:[ebp-0x6C],ebx
    0040214C   . |FF15 90414000 call dword ptr ds:[<&MSVBVM50.__vbaI4Var>;  取字符串
    00402152   . |8D4D BC       lea ecx,dword ptr ss:[ebp-0x44]          ; |
    00402155   . |50            push eax                                 ; |Start = 0x7DD733B8
    00402156   . |8D55 84       lea edx,dword ptr ss:[ebp-0x7C]          ; |
    00402159   . |51            push ecx                                 ; |dString8 = NULL
    0040215A   . |52            push edx                                 ; |RetBUFFER = Andréna.<ModuleEntryPoint>
    0040215B   . |FF15 38414000 call dword ptr ds:[<&MSVBVM50.#rtcMidCha>; 
    tcMidCharVar
    00402161   . |8D45 84       lea eax,dword ptr ss:[ebp-0x7C]
    00402164   . |8D4D A8       lea ecx,dword ptr ss:[ebp-0x58]
    00402167   . |50            push eax                                 ; /String8 = kernel32.BaseThreadInitThunk
    00402168   . |51            push ecx                                 ; |ARG2 = NULL
    00402169   . |FF15 70414000 call dword ptr ds:[<&MSVBVM50.__vbaStrVa>; \__vbaStrVarVal
    0040216F   . |50            push eax                                 ; /String = "?U嬱吷卽."
    00402170   . |FF15 0C414000 call dword ptr ds:[<&MSVBVM50.#rtcAnsiVa>; ASCII码
    00402176   . |66:8985 4CFFF>mov word ptr ss:[ebp-0xB4],ax
    0040217D   . |8D55 CC       lea edx,dword ptr ss:[ebp-0x34]
    00402180   . |8D85 44FFFFFF lea eax,dword ptr ss:[ebp-0xBC]
    00402186   . |52            push edx                                 ; /var18 = Andréna.<ModuleEntryPoint>
    00402187   . |8D8D 74FFFFFF lea ecx,dword ptr ss:[ebp-0x8C]          ; |
    0040218D   . |50            push eax                                 ; |var28 = kernel32.BaseThreadInitThunk
    0040218E   . |51            push ecx                                 ; |saveto8 = NULL
    0040218F   . |899D 44FFFFFF mov dword ptr ss:[ebp-0xBC],ebx          ; |
    00402195   . |FF15 94414000 call dword ptr ds:[<&MSVBVM50.__vbaVarAd>; 相加
    

    然后是将相加的结果乘上固定的值(0x499602D2):

    004021DF   .  51            push ecx                                      ; /var18 = 0018F3CC
    004021E0   .  8D45 94       lea eax,dword ptr ss:[ebp-0x6C]               ; |
    004021E3   .  52            push edx                                      ; |var28 = 0000003A
    004021E4   .  50            push eax                                      ; |SaveTo8 = 0018F3CC
    004021E5   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],0x499602D2        ; |
    004021EF   .  C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],0x3               ; |
    004021F9   .  FF15 5C414000 call dword ptr ds:[<&MSVBVM50.__vbaVarMul>]   ; 相乘
    

    123

    最后再将输入的字符串中的第四位和第九位变为“-”。

    00402210   .  6A 04         push 0x4
    00402212   .  8D95 54FFFFFF lea edx,dword ptr ss:[ebp-0xAC]
    00402218   .  6A 01         push 0x1
    0040221A   .  52            push edx
    0040221B   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],Andréna.00401C34  ;  -
    00402225   .  C785 54FFFFFF>mov dword ptr ss:[ebp-0xAC],0x8
    0040222F   .  FFD3          call ebx                                      ;  变化字符; <&MSVBVM50.__vbaMidStmtVar>
    00402231   .  8D45 CC       lea eax,dword ptr ss:[ebp-0x34]
    00402234   .  8D8D 54FFFFFF lea ecx,dword ptr ss:[ebp-0xAC]
    0040223A   .  50            push eax
    0040223B   .  6A 09         push 0x9
    0040223D   .  6A 01         push 0x1
    0040223F   .  51            push ecx
    00402240   .  C785 5CFFFFFF>mov dword ptr ss:[ebp-0xA4],Andréna.00401C34  ;  -
    

    所以最后总结一下,key的生成流程就是:name的各位ascii码相加×0x499602D2,再把第四位和第九位换位“-”

    最后输出的就是key了。

  • 相关阅读:
    margin和pading的百分比值
    Vue中的computed和watch
    JS的自身属性和继承属性
    JS对象的可枚举属性和不可枚举属性
    Dart语言学习
    Practice_Test
    Lesson2 basic python_20200920
    Python 基础语法L1
    小男孩和狗的故事
    智者的故事
  • 原文地址:https://www.cnblogs.com/lex-shoukaku/p/13305404.html
Copyright © 2020-2023  润新知