首页
社区
课程
招聘
绝望了,跟不出这个RSA的过程,怀疑是RSA但是又有点象DSA
2006-7-2 19:33 4726

绝望了,跟不出这个RSA的过程,怀疑是RSA但是又有点象DSA

2006-7-2 19:33
4726
绝望了,跟不出这个RSA的过程,怀疑是RSA但是又有点象DSA
已经跟了1周了, 找到他的关键CALL了,但是用工具算的结果又不一样,而直接模拟里面的CALL又相当的多

他CLIENT里有1张固定的表长度是256,第一次和服务器通讯,服务器也返回另外一张表也是256,然后开始CLIENT的运算,第一次是在本地通过GetCurrentThreadId以及其他API随即产生一个值,用SHA1得到一个HASH值
这个值我验证了,是可以伪造的。下来的过程就是,将CLIENT这个固定的256表,SHA1得到的表,还有一个常数32,参数400,一起送到核心处理的地方,之后得到一个256的表发给SERVER,接下来,在用固定表,发给服务器表,SHA1表,常数400,通过同样的核心处理得到CLIENT自己用的表,长度256,然后取表头8为作为加密的用的KEY,

数据加解密过程我已经都搞定,就是这个加密解密用的KEY生成过程非常复杂。郁闷

以下是部分核心过程
00640A40  /$  55                 push ebp
00640A41  |.  8BEC               mov ebp,esp
00640A43  |.  81EC B0000000      sub esp,0B0
00640A49  |.  53                 push ebx
00640A4A  |.  56                 push esi
00640A4B  |.  57                 push edi
00640A4C  |.  8DBD 50FFFFFF      lea edi,dword ptr ss:[ebp-B0]
00640A52  |.  B9 2C000000        mov ecx,2C
00640A57  |.  B8 CCCCCCCC        mov eax,CCCCCCCC
00640A5C  |.  F3:AB              rep stos dword ptr es:[edi]
00640A5E  |.  E8 4BA60800        call <jmp.&KERNEL32.GetCurrentProcessId>         ; [GetCurrentProcessId
00640A63  |.  8945 FC            mov dword ptr ss:[ebp-4],eax
00640A66  |.  6A 00              push 0
00640A68  |.  E8 95490700        call Nobol.006B5402                              ;  演算用的第2个参数,API
00640A6D  |.  83C4 04            add esp,4
00640A70  |.  8945 F8            mov dword ptr ss:[ebp-8],eax
00640A73  |.  837D 0C 29         cmp dword ptr ss:[ebp+C],29
00640A77  |.  7D 11              jge short Nobol.00640A8A
00640A79  |.  8B45 0C            mov eax,dword ptr ss:[ebp+C]
00640A7C  |.  50                 push eax                                         ; /Arg2
00640A7D  |.  68 90A27000        push Nobol.0070A290                              ; |Arg1 = 0070A290 ASCII "Warning:4220 SHA-1 keygen output buffer is smaller than 40byte. It usually needs 40 byte. len:%d
"
00640A82  |.  E8 49CDFFFF        call Nobol.0063D7D0                              ; \nobol.0063D7D0
00640A87  |.  83C4 08            add esp,8
00640A8A  |>  8D4D 98            lea ecx,dword ptr ss:[ebp-68]
00640A8D  |.  51                 push ecx                                         ; /Arg1
00640A8E  |.  E8 FD030000        call Nobol.00640E90                              ; \散列初始化
00640A93  |.  83C4 04            add esp,4
00640A96  |.  6A 04              push 4                                           ; /Arg3 = 00000004
00640A98  |.  8D55 F8            lea edx,dword ptr ss:[ebp-8]                     ; |
00640A9B  |.  52                 push edx                                         ; |GetFileSystemTimeAs得到的参数
00640A9C  |.  8D45 98            lea eax,dword ptr ss:[ebp-68]                    ; |
00640A9F  |.  50                 push eax                                         ; |SHA散列值
00640AA0  |.  E8 5B040000        call Nobol.00640F00                              ; \nobol.00640F00
00640AA5  |.  83C4 0C            add esp,0C
00640AA8  |.  6A 04              push 4                                           ; /Arg3 = 00000004
00640AAA  |.  8D4D FC            lea ecx,dword ptr ss:[ebp-4]                     ; |
00640AAD  |.  51                 push ecx                                         ; |GetCurrentProcessId得到的值
00640AAE  |.  8D55 98            lea edx,dword ptr ss:[ebp-68]                    ; |
00640AB1  |.  52                 push edx                                         ; |Arg1
00640AB2  |.  E8 49040000        call Nobol.00640F00                              ; \nobol.00640F00
00640AB7  |.  83C4 0C            add esp,0C
00640ABA  |.  B8 01000000        mov eax,1
00640ABF  |.  85C0               test eax,eax
00640AC1  |.  74 50              je short Nobol.00640B13
00640AC3  |.  8BF4               mov esi,esp
00640AC5  |.  FF15 28E36E00      call dword ptr ds:[<&KERNEL32.GetTickCount>]     ; [GetTickCount
00640ACB  |.  3BF4               cmp esi,esp
00640ACD  |.  E8 3B600700        call Nobol.006B6B0D
00640AD2  |.  8945 90            mov dword ptr ss:[ebp-70],eax
00640AD5  |.  6A 04              push 4                                           ; /Arg3 = 00000004
00640AD7  |.  8D4D 90            lea ecx,dword ptr ss:[ebp-70]                    ; |
00640ADA  |.  51                 push ecx                                         ; |Arg2
00640ADB  |.  8D55 98            lea edx,dword ptr ss:[ebp-68]                    ; |
00640ADE  |.  52                 push edx                                         ; |Arg1
00640ADF  |.  E8 1C040000        call Nobol.00640F00                              ; \这个就是SHA的核心算法
00640AE4  |.  83C4 0C            add esp,0C
00640AE7  |.  8B45 F8            mov eax,dword ptr ss:[ebp-8]
00640AEA  |.  50                 push eax
00640AEB  |.  E8 BC370700        call Nobol.006B42AC
00640AF0  |.  83C4 04            add esp,4
00640AF3  |.  E8 C1370700        call Nobol.006B42B9
00640AF8  |.  0305 40DC8B00      add eax,dword ptr ds:[8BDC40]
00640AFE  |.  8945 94            mov dword ptr ss:[ebp-6C],eax
00640B01  |.  6A 04              push 4                                           ; /Arg3 = 00000004
00640B03  |.  8D4D 94            lea ecx,dword ptr ss:[ebp-6C]                    ; |
00640B06  |.  51                 push ecx                                         ; |Arg2
00640B07  |.  8D55 98            lea edx,dword ptr ss:[ebp-68]                    ; |
00640B0A  |.  52                 push edx                                         ; |Arg1
00640B0B  |.  E8 F0030000        call Nobol.00640F00                              ; \nobol.00640F00
00640B10  |.  83C4 0C            add esp,0C
00640B13  |>  8D45 98            lea eax,dword ptr ss:[ebp-68]
00640B16  |.  50                 push eax                                         ; /Arg1
00640B17  |.  E8 D4210000        call Nobol.00642CF0                              ; \nobol.00642CF0
00640B1C  |.  83C4 04            add esp,4
00640B1F  |.  8B4D A8            mov ecx,dword ptr ss:[ebp-58]
00640B22  |.  51                 push ecx                                         ; /Arg8
00640B23  |.  8B55 A4            mov edx,dword ptr ss:[ebp-5C]                    ; |
00640B26  |.  52                 push edx                                         ; |Arg7
00640B27  |.  8B45 A0            mov eax,dword ptr ss:[ebp-60]                    ; |
00640B2A  |.  50                 push eax                                         ; |Arg6
00640B2B  |.  8B4D 9C            mov ecx,dword ptr ss:[ebp-64]                    ; |
00640B2E  |.  51                 push ecx                                         ; |Arg5
00640B2F  |.  8B55 98            mov edx,dword ptr ss:[ebp-68]                    ; |
00640B32  |.  52                 push edx                                         ; |Arg4
00640B33  |.  68 A4867000        push Nobol.007086A4                              ; |Arg3 = 007086A4 ASCII "%08lx%08lx%08lx%08lx%08lx"
00640B38  |.  8B45 0C            mov eax,dword ptr ss:[ebp+C]                     ; |
00640B3B  |.  50                 push eax                                         ; |Arg2
00640B3C  |.  8B4D 08            mov ecx,dword ptr ss:[ebp+8]                     ; |
00640B3F  |.  51                 push ecx                                         ; |空地址
00640B40  |.  E8 8B020000        call Nobol.00640DD0                              ; \最终算出来的结果
00640B45  |.  83C4 20            add esp,20
00640B48  |.  5F                 pop edi
00640B49  |.  5E                 pop esi
00640B4A  |.  5B                 pop ebx
00640B4B  |.  81C4 B0000000      add esp,0B0
00640B51  |.  3BEC               cmp ebp,esp
00640B53  |.  E8 B55F0700        call Nobol.006B6B0D
00640B58  |.  8BE5               mov esp,ebp
00640B5A  |.  5D                 pop ebp
00640B5B  \.  C3                 retn

00646B10  /$  55                 push ebp
00646B11  |.  8BEC               mov ebp,esp
00646B13  |.  83EC 58            sub esp,58
00646B16  |.  53                 push ebx
00646B17  |.  56                 push esi
00646B18  |.  57                 push edi
00646B19  |.  8D7D A8            lea edi,dword ptr ss:[ebp-58]
00646B1C  |.  B9 16000000        mov ecx,16
00646B21  |.  B8 CCCCCCCC        mov eax,CCCCCCCC
00646B26  |.  F3:AB              rep stos dword ptr es:[edi]
00646B28  |.  C745 EC 00000000   mov dword ptr ss:[ebp-14],0
00646B2F  |.  E8 DC030000        call Nobol.00646F10                              ;  不用模拟,可能是清0的初始化的过程
00646B34  |.  8945 FC            mov dword ptr ss:[ebp-4],eax
00646B37  |.  8B45 FC            mov eax,dword ptr ss:[ebp-4]
00646B3A  |.  50                 push eax                                         ; /Arg1
00646B3B  |.  E8 80080000        call Nobol.006473C0                              ; \nobol.006473C0
00646B40  |.  83C4 04            add esp,4
00646B43  |.  8B4D 08            mov ecx,dword ptr ss:[ebp+8]
00646B46  |.  51                 push ecx                                         ; /收到服务器的表
00646B47  |.  8D55 FC            lea edx,dword ptr ss:[ebp-4]                     ; |
00646B4A  |.  52                 push edx                                         ; |Arg1
00646B4B  |.  E8 E00D0000        call Nobol.00647930                              ; \nobol.00647930
00646B50  |.  83C4 08            add esp,8
00646B53  |.  E8 B8030000        call Nobol.00646F10
00646B58  |.  8945 F8            mov dword ptr ss:[ebp-8],eax
00646B5B  |.  8B45 F8            mov eax,dword ptr ss:[ebp-8]
00646B5E  |.  50                 push eax                                         ; /Arg1
00646B5F  |.  E8 5C080000        call Nobol.006473C0                              ; \nobol.006473C0
00646B64  |.  83C4 04            add esp,4
00646B67  |.  8B4D 0C            mov ecx,dword ptr ss:[ebp+C]
00646B6A  |.  51                 push ecx                                         ; /固定的表地址
00646B6B  |.  8D55 F8            lea edx,dword ptr ss:[ebp-8]                     ; |
00646B6E  |.  52                 push edx                                         ; |Arg1
00646B6F  |.  E8 BC0D0000        call Nobol.00647930                              ; \是将表倒放并转换成十六进制
00646B74  |.  83C4 08            add esp,8
00646B77  |.  E8 94030000        call Nobol.00646F10
00646B7C  |.  8945 F4            mov dword ptr ss:[ebp-C],eax
00646B7F  |.  8B45 F4            mov eax,dword ptr ss:[ebp-C]
00646B82  |.  50                 push eax                                         ; /Arg1
00646B83  |.  E8 38080000        call Nobol.006473C0                              ; \nobol.006473C0
00646B88  |.  83C4 04            add esp,4
00646B8B  |.  8B4D 10            mov ecx,dword ptr ss:[ebp+10]
00646B8E  |.  51                 push ecx                                         ; /SHA生成的表
00646B8F  |.  8D55 F4            lea edx,dword ptr ss:[ebp-C]                     ; |
00646B92  |.  52                 push edx                                         ; |Arg1
00646B93  |.  E8 980D0000        call Nobol.00647930                              ; \nobol.00647930
00646B98  |.  83C4 08            add esp,8
00646B9B  |.  E8 70030000        call Nobol.00646F10
00646BA0  |.  8945 F0            mov dword ptr ss:[ebp-10],eax
00646BA3  |.  8B45 F0            mov eax,dword ptr ss:[ebp-10]
00646BA6  |.  50                 push eax                                         ; /Arg1
00646BA7  |.  E8 14080000        call Nobol.006473C0                              ; \nobol.006473C0
00646BAC  |.  83C4 04            add esp,4
00646BAF  |.  E8 4C100000        call Nobol.00647C00
00646BB4  |.  8945 E8            mov dword ptr ss:[ebp-18],eax
00646BB7  |.  8B4D E8            mov ecx,dword ptr ss:[ebp-18]
00646BBA  |.  51                 push ecx                                         ; /空地址,用来存放最终表
00646BBB  |.  8B55 F8            mov edx,dword ptr ss:[ebp-8]                     ; |
00646BBE  |.  52                 push edx                                         ; |固定表转换后地址,和大小的结构地址
00646BBF  |.  8B45 F4            mov eax,dword ptr ss:[ebp-C]                     ; |
00646BC2  |.  50                 push eax                                         ; |SHA1表转换后和大小的结构指针
00646BC3  |.  8B4D FC            mov ecx,dword ptr ss:[ebp-4]                     ; |
00646BC6  |.  51                 push ecx                                         ; |服务器表的结果
00646BC7  |.  8B55 F0            mov edx,dword ptr ss:[ebp-10]                    ; |
00646BCA  |.  52                 push edx                                         ; |Arg1
00646BCB  |.  E8 60130000        call Nobol.00647F30                              ; \重点检查这个CALL
00646BD0  |.  83C4 14            add esp,14
00646BD3  |.  8B45 E8            mov eax,dword ptr ss:[ebp-18]
00646BD6  |.  50                 push eax                                         ; /Arg1
00646BD7  |.  E8 44110000        call Nobol.00647D20                              ; \nobol.00647D20
00646BDC  |.  83C4 04            add esp,4
00646BDF  |.  8B4D F0            mov ecx,dword ptr ss:[ebp-10]
00646BE2  |.  51                 push ecx                                         ; /将要转换的结构体地址
00646BE3  |.  E8 D80B0000        call Nobol.006477C0                              ; \函数作用,将送进去的数组转换成字符串,返回EAX
00646BE8  |.  83C4 04            add esp,4
00646BEB  |.  8945 EC            mov dword ptr ss:[ebp-14],eax
00646BEE  |.  8B55 EC            mov edx,dword ptr ss:[ebp-14]
00646BF1  |.  52                 push edx                                         ; /原地址
00646BF2  |.  8B45 18            mov eax,dword ptr ss:[ebp+18]                    ; |
00646BF5  |.  50                 push eax                                         ; |大小
00646BF6  |.  8B4D 14            mov ecx,dword ptr ss:[ebp+14]                    ; |
00646BF9  |.  51                 push ecx                                         ; |目标地址
00646BFA  |.  E8 A190FFFF        call Nobol.0063FCA0                              ; \将字符形式转换成为数字
00646BFF  |.  83C4 0C            add esp,0C
00646C02  |.  8B55 EC            mov edx,dword ptr ss:[ebp-14]
00646C05  |.  52                 push edx                                         ; /Arg1
00646C06  |.  E8 55C3FFFF        call Nobol.00642F60                              ; \nobol.00642F60
00646C0B  |.  83C4 04            add esp,4
00646C0E  |.  8B45 FC            mov eax,dword ptr ss:[ebp-4]
00646C11  |.  50                 push eax                                         ; /Arg1
00646C12  |.  E8 A9070000        call Nobol.006473C0                              ; \nobol.006473C0
00646C17  |.  83C4 04            add esp,4
00646C1A  |.  8B4D F4            mov ecx,dword ptr ss:[ebp-C]
00646C1D  |.  51                 push ecx                                         ; /Arg1
00646C1E  |.  E8 9D070000        call Nobol.006473C0                              ; \nobol.006473C0
00646C23  |.  83C4 04            add esp,4
00646C26  |.  8B55 F8            mov edx,dword ptr ss:[ebp-8]
00646C29  |.  52                 push edx                                         ; /Arg1
00646C2A  |.  E8 91070000        call Nobol.006473C0                              ; \nobol.006473C0
00646C2F  |.  83C4 04            add esp,4
00646C32  |.  8B45 F0            mov eax,dword ptr ss:[ebp-10]
00646C35  |.  50                 push eax                                         ; /Arg1
00646C36  |.  E8 85070000        call Nobol.006473C0                              ; \nobol.006473C0
00646C3B  |.  83C4 04            add esp,4
00646C3E  |.  8B4D FC            mov ecx,dword ptr ss:[ebp-4]
00646C41  |.  51                 push ecx                                         ; /Arg1
00646C42  |.  E8 09020000        call Nobol.00646E50                              ; \nobol.00646E50
00646C47  |.  83C4 04            add esp,4
00646C4A  |.  8B55 F4            mov edx,dword ptr ss:[ebp-C]
00646C4D  |.  52                 push edx                                         ; /Arg1
00646C4E  |.  E8 FD010000        call Nobol.00646E50                              ; \nobol.00646E50
00646C53  |.  83C4 04            add esp,4
00646C56  |.  8B45 F8            mov eax,dword ptr ss:[ebp-8]
00646C59  |.  50                 push eax                                         ; /Arg1
00646C5A  |.  E8 F1010000        call Nobol.00646E50                              ; \nobol.00646E50
00646C5F  |.  83C4 04            add esp,4
00646C62  |.  8B4D F0            mov ecx,dword ptr ss:[ebp-10]
00646C65  |.  51                 push ecx                                         ; /Arg1
00646C66  |.  E8 E5010000        call Nobol.00646E50                              ; \nobol.00646E50
00646C6B  |.  83C4 04            add esp,4
00646C6E  |.  5F                 pop edi
00646C6F  |.  5E                 pop esi
00646C70  |.  5B                 pop ebx
00646C71  |.  83C4 58            add esp,58
00646C74  |.  3BEC               cmp ebp,esp
00646C76  |.  E8 92FE0600        call Nobol.006B6B0D
00646C7B  |.  8BE5               mov esp,ebp
00646C7D  |.  5D                 pop ebp
00646C7E  \.  C3                 retn

CLIENT固定表:
F488FD584E49DBCD20B49DE49107366B336C380D451D0F7C88B31C7C5B2D8EF6F3C923C043F0A55B188D8EBB558CB85D38D334FD7C175743A31D186CDE33212CB52AFF3CE1B1294018118D7C84A70A72D686C40319C807297ACA950CD9969FABD00A509B0246D3083D66A45D419F9C7CBD894B221926BAABA25EC355E92F78C7

SHA1生成的HASH
0AC13A0ABA5446826E646556DEBE9E13B489EE57

计算后发给服务器的表
B7FE5CC769237FC46629C02711BF54FD8D58D86A2667CD17FCA1E62E3EE928767A559274F6D4429A2F475F46D7AEE310F6B3E65731B6BC82791E8AF085B3DD45C95CB99BEF3CB257D36F6B9063007EA1594544D951785B59DA106E3B6D58B57BF9202E2801C966FE857F91602B7F930EEB4510F049C1FCCCBFCAA7D7693BDBB2

最终得到的表
C17FCDAF9A4AC8FA6427A3EBAD3B31563B68FBB36C678A55208E549AE892FE238C2132FFA7E7E21A554C287E378A96F8DB9067B9DEA4B3FDBB8B7606932E632BE7CE91F8F964D5E7144C49D2F7DB5C6C302DBA71E4FFEB460D31FADA52424014318F6F6A3BBC1727A2EC6465F5417ED03159F98343EAD0C3FBFE9987252686DA

我怎么算都得不到这个最终的表。。请大家帮忙看看

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
打赏
分享
最新回复 (3)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gkend 2006-7-2 20:00
2
0
说了半天,不知道你到底要做什么?
雪    币: 217
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
leahart 2006-7-2 20:10
3
0
最初由 gkend 发布
说了半天,不知道你到底要做什么?


可能是我的表达不清楚,我的意思是请大家帮忙看看,这个可能是RSA还是DSA,另外给出的3个数据是否能计算出结果?
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gkend 2006-7-2 20:49
4
0
没细看,可能是通过服务器计算返回结果。
没必要搞清算法。服务器验证最好破解了,只要你是正版用户,那么就可以得到服务器返回结果。那么即使不是正版用户,你也可以修改使之直接返回这一结果。
游客
登录 | 注册 方可回帖
返回