欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

菜鸟学破解:1.Feiq等级设置;2.文件解密

菜鸟学破解:1.Feiq等级设置;2.文件解密

菜鸟学破解:1.Feiq等级设置
公司内部聊天软件用的是Feiq,像QQ那样也有太阳月亮星星等级,不过是用授权码方式进行设置。
用OD打开运行Feiq,在汇编窗口右键选择“查找”“所有模块中的名字”,找出MessageBoxA打上断点。
打开Feiq的等级设置窗口,随便填个授权码,按确定跑到MessageBoxA的断点处,可见执行这个函数后会弹出“授权码不正确”的窗口;返回上一个函数,会发现这里分别有两个地方调用MessageBoxA,稍往前观察可得"00463503   .  74 25         je      short 0046352A"这里的决定调用哪个MessageBoxA;猜想这里就是判断授权码对错的分支,把je改成jne后再运行等级设置,断点后弹出“授权码正确”的窗口。
因此,把Feiq.exe中那个地方的je改成jne,以后运行这个exe就可以随意进行等级设置了。
=========================================================
00463480   .  6A FF         push    -1
00463482   .  68 D8505800   push    005850D8                         ;  SE 处理程序安装
00463487   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
0046348D   .  50            push    eax
0046348E   .  64:8925 00000>mov     dword ptr fs:[0], esp
00463495   .  83EC 08       sub     esp, 8
00463498   .  53            push    ebx
00463499   .  56            push    esi
0046349A   .  57            push    edi
0046349B   .  8BF9          mov     edi, ecx
0046349D   .  6A 01         push    1
0046349F   .  E8 C27E1000   call    0056B366
004634A4   .  8B47 68       mov     eax, dword ptr [edi+68]
004634A7   .  8D57 60       lea     edx, dword ptr [edi+60]
004634AA   .  50            push    eax
004634AB   .  51            push    ecx
004634AC   .  8BCC          mov     ecx, esp
004634AE   .  896424 18     mov     dword ptr [esp+18], esp
004634B2   .  52            push    edx
004634B3   .  E8 C94F1000   call    00568481
004634B8   .  8D4424 14     lea     eax, dword ptr [esp+14]
004634BC   .  50            push    eax
;;;;;;;;;;;;;;;;;;;;;;;;传入机器标识码,算出授权码;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
004634BD   .  E8 0E040300   call    004938D0

004634C2   .  83C4 0C       add     esp, 0C
004634C5   .  8B77 64       mov     esi, dword ptr [edi+64]
004634C8   .  8B4424 0C     mov     eax, dword ptr [esp+C]
004634CC   .  C74424 1C 000>mov     dword ptr [esp+1C], 0
004634D4   >  8A10          mov     dl, byte ptr [eax]
004634D6   .  8A1E          mov     bl, byte ptr [esi]
004634D8   .  8ACA          mov     cl, dl
;;;;;;;;;;;;;;;;;;;;;;;;比较输入的字符串和授权码;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
004634DA   .  3AD3          cmp     dl, bl
004634DC   .  75 1E         jnz     short 004634FC
004634DE   .  84C9          test    cl, cl
004634E0   .  74 16         je      short 004634F8
004634E2   .  8A50 01       mov     dl, byte ptr [eax+1]
004634E5   .  8A5E 01       mov     bl, byte ptr [esi+1]
004634E8   .  8ACA          mov     cl, dl
004634EA   .  3AD3          cmp     dl, bl
004634EC   .  75 0E         jnz     short 004634FC
004634EE   .  83C0 02       add     eax, 2
004634F1   .  83C6 02       add     esi, 2
004634F4   .  84C9          test    cl, cl
004634F6   .^ 75 DC         jnz     short 004634D4

004634F8   >  33C0          xor     eax, eax
004634FA   .  EB 05         jmp     short 00463501
004634FC   >  1BC0          sbb     eax, eax
004634FE   .  83D8 FF       sbb     eax, -1
00463501      85C0          test    eax, eax
;;;;;;;;;;;;;;;;;;;;;;;;跳转至“授权码正确”对话框;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
00463503   .  74 25         je      short 0046352A

00463505   .  68 D8E75F00   push    005FE7D8
0046350A   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
0046350E   .  E8 82531000   call    00568895
00463513   .  8B47 5C       mov     eax, dword ptr [edi+5C]
00463516   .  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00463518   .  68 90755E00   push    005E7590                         ; |Title = "提示"
0046351D   .  50            push    eax                              ; |Text
0046351E   .  8B47 1C       mov     eax, dword ptr [edi+1C]          ; |
00463521   .  50            push    eax                              ; |hOwner
;;;;;;;;;;;;;;;;;;;;;;;;“授权码不正确”对话框;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
00463522   .  FF15 10775900 call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA

00463528   .  EB 1D         jmp     short 00463547
0046352A   >  8B4F 1C       mov     ecx, dword ptr [edi+1C]
0046352D   .  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
0046352F   .  68 74C65E00   push    005EC674                         ; |Title = "成?,A6,""
00463534   .  68 64C65E00   push    005EC664                         ; |Text = "授?,A8,"码正?,B7,"?,A1,""
00463539   .  51            push    ecx                              ; |hOwner
;;;;;;;;;;;;;;;;;;;;;;;;“授权码正确”对话框;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0046353A   .  FF15 10775900 call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA

00463540   .  8BCF          mov     ecx, edi
00463542   .  E8 384E1000   call    0056837F
00463547   >  8D4C24 0C     lea     ecx, dword ptr [esp+C]
0046354B   .  C74424 1C FFF>mov     dword ptr [esp+1C], -1
00463553   .  E8 B4511000   call    0056870C
00463558   .  8B4C24 14     mov     ecx, dword ptr [esp+14]
0046355C   .  5F            pop     edi
0046355D   .  5E            pop     esi
0046355E   .  64:890D 00000>mov     dword ptr fs:[0], ecx
00463565   .  5B            pop     ebx
00463566   .  83C4 14       add     esp, 14
00463569   .  C3            retn
=========================================================
除了直接改跳转的方法,还可以直接找出它的授权码。在“决定性一跳”之前有个比较变量的地方,观察发现是把输入的授权码和一个字符串进行比较,这样不改exe,直接手工输入该字符串,也可以任意设置等级了。
然而,如果换了机器,这个字符串就无效了。可以想到授权码的生成和机器信息(如计算机标识码之类)有关,因此可以更进一步寻找授权码生成的方法,做成算号器。由于本人水平和时间有限,这部分没有完成。
菜鸟学破解:2.文件解密
公司最近启用加密策略,对某些项目文件进行自动加解密,这样文件就算带回家也打不开了。
随便新建了几个小文件,观察加密后的二进制,加密文件由大致三部分组成:密文、0填充区和附加信息。其中密文和原文长度一致,附加信息对于每个文件都是一样的。
初步猜测,加密应该是某种字符映射Hash算法,估计可以穷举暴力解密。
于是分别生成内容全部是0x00,0x01……0xFF的文件,对比自动加密后生成的文件,发现加密算法以4个bit为单位。一共有16种(f0:{0->0,1->1...},f1:{0->1,1->0...}...fF:{0->F,1->E...})映射,根据原文字节的位置选一种映射得到密文,对应可以表示为:(f8 f7) (fD f1) (f1 f2) (f7 fD) ...
至于对应某个位置应该选哪一种映射,从这里难以看出规律,而且找不到有循环周期;然而,如果只要有一个原文全是0x00的Nbyte的加密后文件,就可以此为参考很方便地得到每个位置的映射,从而可以解密小于Nbyte的加密文件。
=======原文:密文=====================================
00 00 00 ……:  87 D1 12 7D 4C 73 0D 4C 86 69 9A 66 08 ED EF DF ……  
01 01 01 ……:  86 D0 13 7C 4D 72 0C 4D 87 68 9B 67 09 EC EE DE ……  
02 02 02 ……:  85 D3 10 7F 4E 71 0F 4E 84 6B 98 64 0A EF ED DD ……  
03 03 03 ……:  84 D2 11 7E 4F 70 0E 4F 85 6A 99 65 0B EE EC DC ……  
04 04 04 ……:  83 D5 16 79 48 77 09 48 82 6D 9E 62 0C E9 EB DB ……  
05 05 05 ……:  82 D4 17 78 49 76 08 49 83 6C 9F 63 0D E8 EA DA ……  
06 06 06 ……:  81 D7 14 7B 4A 75 0B 4A 80 6F 9C 60 0E EB E9 D9 ……  
07 07 07 ……:  80 D6 15 7A 4B 74 0A 4B 81 6E 9D 61 0F EA E8 D8 ……  
08 08 08 ……:  8F D9 1A 75 44 7B 05 44 8E 61 92 6E 00 E5 E7 D7 ……  
09 09 09 ……:  8E D8 1B 74 45 7A 04 45 8F 60 93 6F 01 E4 E6 D6 ……  
0A 0A 0A ……:  8D DB 18 77 46 79 07 46 8C 63 90 6C 02 E7 E5 D5 ……  
0B 0B 0B ……:  8C DA 19 76 47 78 06 47 8D 62 91 6D 03 E6 E4 D4 ……  
0C 0C 0C ……:  8B DD 1E 71 40 7F 01 40 8A 65 96 6A 04 E1 E3 D3 ……  
0D 0D 0D ……:  8A DC 1F 70 41 7E 00 41 8B 64 97 6B 05 E0 E2 D2 ……  
0E 0E 0E ……:  89 DF 1C 73 42 7D 03 42 88 67 94 68 06 E3 E1 D1 ……  
0F 0F 0F ……:  88 DE 1D 72 43 7C 02 43 89 66 95 69 07 E2 E0 D0 …… 
 ……
====================================================
除了暴力,当然还有其他的办法。例如可以翻出进程里面调用的加解密模块,分析跟踪一下,还能找到选择映射的算法,这就一劳永逸,多大的文件都可以方便解密了。当然,本人还菜,只是有个想法,还没做出来。
这是我初学破解的小“成果”,和大家分享一下,也希望可以申请到邀请码

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功