这就好比请你喝一杯可乐问你如何得到可乐的配方,或者给你一张盗版xp光盘,请你就此得到Windows源代码一样。

解决方案 »

  1.   

    反汇编,调试。
    经过这样的步骤,LZ一定可以掌握加密,解密算法。调试器的种类很多。如果只是vb,c、汇编写的程序也不是太难,如果是其他什么C#之列的费劲了。
      

  2.   

    我跟踪以后,这部分应该是他的算法,不知道是否能帮忙看下,解释下,只看懂部分0049DD11    85C0            test eax,eax
    0049DD13    0F84 5C020000   je 测试.0049DF75
    0049DD19    8D45 98         lea eax,dword ptr ss:[ebp-0x68]
    0049DD1C    8D4D DC         lea ecx,dword ptr ss:[ebp-0x24]
    0049DD1F    50              push eax
    0049DD20    51              push ecx
    0049DD21    C785 50FFFFFF B>mov dword ptr ss:[ebp-0xB0],测试.0040C>; &H
    0049DD2B    C785 48FFFFFF 0>mov dword ptr ss:[ebp-0xB8],0x8
    0049DD35    895D A0         mov dword ptr ss:[ebp-0x60],ebx
    0049DD38    895D 98         mov dword ptr ss:[ebp-0x68],ebx
    0049DD3B    FF15 C8114000   call dword ptr ds:[<&MSVBVM60.__vbaI4Var>; msvbvm60.__vbaI4Var
    0049DD41    8B55 14         mov edx,dword ptr ss:[ebp+0x14]
    0049DD44    50              push eax;从第几位开始,这里第一次是从第3个开始
    0049DD45    8B02            mov eax,dword ptr ds:[edx]
    0049DD47    50              push eax
    0049DD48    FF15 BC104000   call dword ptr ds:[<&MSVBVM60.#631>]     ; msvbvm60.rtcMidCharBstr;从第几位开始截取2个字符。得出eax=E0(第一次截取)
    0049DD4E    8D4D 88         lea ecx,dword ptr ss:[ebp-0x78]
    0049DD51    8D95 78FFFFFF   lea edx,dword ptr ss:[ebp-0x88]
    0049DD57    51              push ecx
    0049DD58    52              push edx
    0049DD59    8945 90         mov dword ptr ss:[ebp-0x70],eax
    0049DD5C    C745 88 0800000>mov dword ptr ss:[ebp-0x78],0x8
    0049DD63    FF15 AC104000   call dword ptr ds:[<&MSVBVM60.#520>]     ; msvbvm60.rtcTrimVar
    0049DD69    8D85 48FFFFFF   lea eax,dword ptr ss:[ebp-0xB8]
    0049DD6F    8D8D 78FFFFFF   lea ecx,dword ptr ss:[ebp-0x88]
    0049DD75    50              push eax
    0049DD76    8D95 68FFFFFF   lea edx,dword ptr ss:[ebp-0x98]
    0049DD7C    51              push ecx
    0049DD7D    52              push edx
    0049DD7E    FFD6            call esi                                 ; msvbvm60.__vbaVarAdd 跟&H连接组合字符串&HE0
    0049DD80    50              push eax
    0049DD81    8D45 AC         lea eax,dword ptr ss:[ebp-0x54]
    0049DD84    50              push eax
    0049DD85    FF15 60114000   call dword ptr ds:[<&MSVBVM60.__vbaStrVa>; msvbvm60.__vbaStrVarVal 把字符转ascii码 从字符串特点位置上获取其值
    0049DD8B    50              push eax;&HE0
    0049DD8C    FF15 2C124000   call dword ptr ds:[<&MSVBVM60.#581>]     ; msvbvm60.rtcR8ValFromBstr //把字符串转换成浮点数
    0049DD92    FF15 E0114000   call dword ptr ds:[<&MSVBVM60.__vbaFpI2>>; msvbvm60.__vbaFpI2
    0049DD98    8D4D AC         lea ecx,dword ptr ss:[ebp-0x54]
    0049DD9B    8945 B0         mov dword ptr ss:[ebp-0x50],eax
    0049DD9E    FF15 28124000   call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; msvbvm60.__vbaFreeStr
    0049DDA4    8D8D 68FFFFFF   lea ecx,dword ptr ss:[ebp-0x98]
    0049DDAA    8D95 78FFFFFF   lea edx,dword ptr ss:[ebp-0x88]
    0049DDB0    51              push ecx
    0049DDB1    8D45 88         lea eax,dword ptr ss:[ebp-0x78]
    0049DDB4    52              push edx
    0049DDB5    8D4D 98         lea ecx,dword ptr ss:[ebp-0x68]
    0049DDB8    50              push eax
    0049DDB9    51              push ecx
    0049DDBA    6A 04           push 0x4
    0049DDBC    FF15 34104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; msvbvm60.__vbaFreeVarList
    0049DDC2    83C4 14         add esp,0x14
    0049DDC5    66:3B7D B4      cmp di,word ptr ss:[ebp-0x4C]
    0049DDC9    7D 0C           jge 测试.0049DDD7
    0049DDCB    66:83C7 01      add di,0x1
    0049DDCF    0F80 62020000   jo 测试.0049E037
    0049DDD5    EB 05           jmp 测试.0049DDDC
    0049DDD7    BF 01000000     mov edi,0x1
    0049DDDC    8B4D 10         mov ecx,dword ptr ss:[ebp+0x10]
    0049DDDF    8D55 98         lea edx,dword ptr ss:[ebp-0x68]
    0049DDE2    0FBFC7          movsx eax,di
    0049DDE5    52              push edx
    0049DDE6    8B11            mov edx,dword ptr ds:[ecx];ecx的值是机器码后8位
    0049DDE8    50              push eax;eax=1;
    0049DDE9    52              push edx;机器码后8位
    0049DDEA    C745 A0 0100000>mov dword ptr ss:[ebp-0x60],0x1
    0049DDF1    895D 98         mov dword ptr ss:[ebp-0x68],ebx
    0049DDF4    FF15 BC104000   call dword ptr ds:[<&MSVBVM60.#631>]     ; msvbvm60.rtcMidCharBstr;从第一个开始截取,每次截取1个字符
    0049DDFA    8BD0            mov edx,eax;(eax 1 E0 on -)
    0049DDFC    8D4D AC         lea ecx,dword ptr ss:[ebp-0x54]
    0049DDFF    FF15 00124000   call dword ptr ds:[<&MSVBVM60.__vbaStrMo>; msvbvm60.__vbaStrMove
    0049DE05    50              push eax
    0049DE06    FF15 40104000   call dword ptr ds:[<&MSVBVM60.#516>]     ; msvbvm60.rtcAnsiValueBstr;把字符转为数据,在eax反馈结果
    0049DE0C    8B4D B0         mov ecx,dword ptr ss:[ebp-0x50]
    0049DE0F    8D95 48FFFFFF   lea edx,dword ptr ss:[ebp-0xB8]
    0049DE15    33C1            xor eax,ecx
    0049DE17    8D4D C4         lea ecx,dword ptr ss:[ebp-0x3C];
    0049DE1A    66:8985 50FFFFF>mov word ptr ss:[ebp-0xB0],ax;ax=00D1
    0049DE21    899D 48FFFFFF   mov dword ptr ss:[ebp-0xB8],ebx
    0049DE27    FF15 18104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMo>; msvbvm60.__vbaVarMove
    0049DE2D    8D4D AC         lea ecx,dword ptr ss:[ebp-0x54]
    0049DE30    FF15 28124000   call dword ptr ds:[<&MSVBVM60.__vbaFreeS>; msvbvm60.__vbaFreeStr;把字符串参数的内存回收 //释放字符串变量
    0049DE36    8D4D 98         lea ecx,dword ptr ss:[ebp-0x68];
    0049DE39    FF15 1C104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; msvbvm60.__vbaFreeVar //释放对象变量
    0049DE3F    66:8B45 BC      mov ax,word ptr ss:[ebp-0x44];
    0049DE43    8D4D C4         lea ecx,dword ptr ss:[ebp-0x3C];
    0049DE46    8D95 58FFFFFF   lea edx,dword ptr ss:[ebp-0xA8]
    0049DE4C    51              push ecx
    0049DE4D    52              push edx
    0049DE4E    66:8985 60FFFFF>mov word ptr ss:[ebp-0xA0],ax
    0049DE55    C785 58FFFFFF 0>mov dword ptr ss:[ebp-0xA8],0x8002
    0049DE5F    FF15 6C104000   call dword ptr ds:[<&MSVBVM60.__vbaVarTs>; msvbvm60.__vbaVarTstLe
    0049DE65    66:85C0         test ax,ax
    0049DE68    74 5A           je 测试.0049DEC4
    0049DE6A    66:8B45 BC      mov ax,word ptr ss:[ebp-0x44]
    0049DE6E    8D8D 58FFFFFF   lea ecx,dword ptr ss:[ebp-0xA8]
    0049DE74    66:8985 50FFFFF>mov word ptr ss:[ebp-0xB0],ax
    0049DE7B    8D55 C4         lea edx,dword ptr ss:[ebp-0x3C]
    0049DE7E    51              push ecx
    0049DE7F    8D45 98         lea eax,dword ptr ss:[ebp-0x68]
    0049DE82    52              push edx
    0049DE83    50              push eax
    0049DE84    C785 60FFFFFF F>mov dword ptr ss:[ebp-0xA0],0xFF
    0049DE8E    899D 58FFFFFF   mov dword ptr ss:[ebp-0xA8],ebx
    0049DE94    899D 48FFFFFF   mov dword ptr ss:[ebp-0xB8],ebx
    0049DE9A    FFD6            call esi
    0049DE9C    8D8D 48FFFFFF   lea ecx,dword ptr ss:[ebp-0xB8]
    0049DEA2    50              push eax
    0049DEA3    8D55 88         lea edx,dword ptr ss:[ebp-0x78]
    0049DEA6    51              push ecx
    0049DEA7    52              push edx
    0049DEA8    FF15 04104000   call dword ptr ds:[<&MSVBVM60.__vbaVarSu>; msvbvm60.__vbaVarSub 变量相减,在eax中返回
    0049DEAE    8BD0            mov edx,eax
    0049DEB0    8D4D C4         lea ecx,dword ptr ss:[ebp-0x3C]
    0049DEB3    FF15 18104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMo>; msvbvm60.__vbaVarMove
    0049DEB9    8D4D 98         lea ecx,dword ptr ss:[ebp-0x68]
    0049DEBC    FF15 1C104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; msvbvm60.__vbaFreeVar
    0049DEC2    EB 31           jmp 测试.0049DEF5
    0049DEC4    66:8B45 BC      mov ax,word ptr ss:[ebp-0x44]
    0049DEC8    8D4D C4         lea ecx,dword ptr ss:[ebp-0x3C]
    0049DECB    66:8985 60FFFFF>mov word ptr ss:[ebp-0xA0],ax
    0049DED2    8D95 58FFFFFF   lea edx,dword ptr ss:[ebp-0xA8]
    0049DED8    51              push ecx
    0049DED9    8D45 98         lea eax,dword ptr ss:[ebp-0x68]
    0049DEDC    52              push edx
    0049DEDD    50              push eax
    0049DEDE    899D 58FFFFFF   mov dword ptr ss:[ebp-0xA8],ebx
    0049DEE4    FF15 04104000   call dword ptr ds:[<&MSVBVM60.__vbaVarSu>; msvbvm60.__vbaVarSub
    0049DEEA    8BD0            mov edx,eax
    0049DEEC    8D4D C4         lea ecx,dword ptr ss:[ebp-0x3C]
    0049DEEF    FF15 18104000   call dword ptr ds:[<&MSVBVM60.__vbaVarMo>; msvbvm60.__vbaVarMove 变体变量赋值(一般用于数值变量) 把变量1赋值给变量2
    0049DEF5    8B4D B8         mov ecx,dword ptr ss:[ebp-0x48]
    0049DEF8    8D55 C4         lea edx,dword ptr ss:[ebp-0x3C]
    0049DEFB    52              push edx
    0049DEFC    898D 60FFFFFF   mov dword ptr ss:[ebp-0xA0],ecx
    0049DF02    C785 58FFFFFF 0>mov dword ptr ss:[ebp-0xA8],0x8
    0049DF0C    FF15 C8114000   call dword ptr ds:[<&MSVBVM60.__vbaI4Var>; msvbvm60.__vbaI4Var 截取字符串
    0049DF12    50              push eax
    0049DF13    8D45 98         lea eax,dword ptr ss:[ebp-0x68]
    0049DF16    50              push eax
    0049DF17    FF15 54114000   call dword ptr ds:[<&MSVBVM60.#608>]     ; msvbvm60.rtcVarBstrFromAnsi
    0049DF23    8D55 98         lea edx,dword ptr ss:[ebp-0x68]
    0049DF26    51              push ecx
    0049DF27    8D45 88         lea eax,dword ptr ss:[ebp-0x78]
    0049DF2A    52              push edx
    0049DF2B    50              push eax
    0049DF2C    FFD6            call esi;vbaVarAdd      ->两个变量值相加 
    0049DF2E    50              push eax
    0049DF2F    FF15 28104000   call dword ptr ds:[<&MSVBVM60.__vbaStrVa>; msvbvm60.__vbaStrVarMove
    0049DF35    8BD0            mov edx,eax
    0049DF37    8D4D B8         lea ecx,dword ptr ss:[ebp-0x48]
    0049DF3A    FF15 00124000   call dword ptr ds:[<&MSVBVM60.__vbaStrMo>; msvbvm60.__vbaStrMove
    0049DF40    8D4D 88         lea ecx,dword ptr ss:[ebp-0x78]
    0049DF43    8D55 98         lea edx,dword ptr ss:[ebp-0x68]
    0049DF46    51              push ecx
    0049DF47    52              push edx
    0049DF48    53              push ebx
    0049DF49    FF15 34104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeV>; msvbvm60.__vbaFreeVarList
    0049DF4F    8B45 B0         mov eax,dword ptr ss:[ebp-0x50]
    0049DF52    83C4 0C         add esp,0xC
    0049DF55    8D8D F8FEFFFF   lea ecx,dword ptr ss:[ebp-0x108]
    0049DF5B    8945 BC         mov dword ptr ss:[ebp-0x44],eax
    0049DF5E    8D95 08FFFFFF   lea edx,dword ptr ss:[ebp-0xF8]
    0049DF64    51              push ecx
    0049DF65    8D45 DC         lea eax,dword ptr ss:[ebp-0x24]
    0049DF68    52              push edx
    0049DF69    50              push eax
    0049DF6A    FF15 1C124000   call dword ptr ds:[<&MSVBVM60.__vbaVarFo>; msvbvm60.__vbaVarForNext
    0049DF70  ^ E9 9CFDFFFF     jmp 测试.0049DD11
      

  3.   


    我更懂到的算法发在上面了,可以帮忙看下,他这个算法就是应该是用机器码跟密钥(57B9C8C9CA345DA1EC2565A4E32C50B4DC2367)出明码的572080480120141031
      

  4.   


    我更懂到的算法发在上面了,可以帮忙看下,他这个算法就是应该是用机器码跟密钥(57B9C8C9CA345DA1EC2565A4E32C50B4DC2367)出明码的572080480120141031你那调试不是都注释了吗。下个断点,运行几次,看看中间过程,就知道算法了。
    我汇编可没那么强,呵呵