首页
社区
课程
招聘
[求助]一软件,怀疑是rsa4096,替换N失败
发表于: 2013-5-24 21:56 9260

[求助]一软件,怀疑是rsa4096,替换N失败

2013-5-24 21:56
9260
对密码学类是个小白,逆向也刚入门,找个练手的,却遇上了怀疑是rsa 4096bit的,由于是小白,可能已经跟进RSA内部,,希望能帮帮小弟一把。

004045C6  |.  8B1D 08B14600       mov     ebx, dword ptr [<&MSVCRT.fopen>] ;  msvcrt.fopen
004045CC  |.  68 30014700         push    00470130                         ; /mode = "rb"
004045D1  |.  50                  push    eax                              ; |path => "c:\c\key1"
004045D2  |.  C605 44EC4D00 56    mov     byte ptr [4DEC44], 56            ; |从配置文件读取KEY文件路径
004045D9  |.  FFD3                call    ebx                              ; \fopen
004045DB  |.  8BF0                mov     esi, eax
004045DD  |.  56                  push    esi                              ; /stream
004045DE  |.  6A 01               push    1                                ; |n = 1
004045E0  |.  68 04010000         push    104                              ; |size = 104 (260.)
004045E5  |.  68 602E4E00         push    004E2E60                         ; |读出KEY文件内容到4E2E60
004045EA  |.  FF15 04B14600       call    dword ptr [<&MSVCRT.fread>]      ; \fread
004045F0  |.  56                  push    esi                              ; /stream
004045F1  |.  FF15 00B14600       call    dword ptr [<&MSVCRT.fclose>]     ; \fclose
004045F7  |.  A0 702E4E00         mov     al, byte ptr [4E2E70]
004045FC  |.  83C4 1C             add     esp, 1C
004045FF  |.  3C 44               cmp     al, 44
00404601  |.  0F85 05060000       jnz     00404C0C
00404607  |.  803D 712E4E00 04    cmp     byte ptr [4E2E71], 4
0040460E  |.  0F85 F8050000       jnz     00404C0C
00404614  |.  B9 7C000000         mov     ecx, 7C
00404619  |.  BE 98C74600         mov     esi, 0046C798                    ;  从46c78取出492byte数据填充到刚读出来的buff
0040461E  |.  BF 602E4E00         mov     edi, 004E2E60                    ;  怀疑前面的读取是假的?
00404623  |.  68 30014700         push    00470130                         ;  ASCII "rb"
00404628  |.  F3:A5               rep     movs dword ptr es:[edi], dword p>
0040462A  |.  B9 85000000         mov     ecx, 85
0040462F  |.  BE 40C34600         mov     esi, 0046C340                    ;  把剩下的20byte从46c340填充进去,492+20=512
00404634  |.  BF 50304E00         mov     edi, 004E3050                    ;  这512应该就是rsa的N,512*8=4096bit的rsa
00404639  |.  F3:A5               rep     movs dword ptr es:[edi], dword p>
0040463B  |.  8B0D 6C124C00       mov     ecx, dword ptr [4C126C]
00404641  |.  51                  push    ecx
00404642  |.  FFD3                call    ebx
00404644  |.  8BF0                mov     esi, eax
00404646  |.  56                  push    esi                              ; /stream
00404647  |.  6A 01               push    1                                ; |n = 1
00404649  |.  68 00020000         push    200                              ; |size = 200 (512.)
0040464E  |.  68 00DA4900         push    0049DA00                         ; |读出密文文件,也是512Byte
00404653  |.  FF15 04B14600       call    dword ptr [<&MSVCRT.fread>]      ; \fread
00404659  |.  56                  push    esi                              ; /stream
0040465A  |.  FF15 00B14600       call    dword ptr [<&MSVCRT.fclose>]     ; \fclose
00404660  |.  68 602E4E00         push    004E2E60                         ;  压入N
00404665  |.  68 00020000         push    200                              ;  长度512
0040466A  |.  8D5424 40           lea     edx, dword ptr [esp+40]
0040466E  |.  68 00DA4900         push    0049DA00                         ;  压入密文
00404673  |.  8D8424 F0000000     lea     eax, dword ptr [esp+F0]
0040467A  |.  52                  push    edx                              ;  edx=12F3ac指向的数据是ED 95 96 7C 34
0040467B  |.  50                  push    eax                              ;  接受返回信息的buff
0040467C  |.  E8 DFE30500         call    00462A60                         ;  跟进去看下

00462A60  /$  8B4424 14           mov     eax, dword ptr [esp+14]
00462A64  |.  81EC 04020000       sub     esp, 204
00462A6A  |.  8B8C24 14020000     mov     ecx, dword ptr [esp+214]
00462A71  |.  56                  push    esi
00462A72  |.  8B30                mov     esi, dword ptr [eax]
00462A74  |.  83C6 07             add     esi, 7
00462A77  |.  C1EE 03             shr     esi, 3
00462A7A  |.  3BCE                cmp     ecx, esi
00462A7C  |.  76 0D               jbe     short 00462A8B
00462A7E  |.  B8 06040000         mov     eax, 406
00462A83  |.  5E                  pop     esi
00462A84  |.  81C4 04020000       add     esp, 204
00462A8A  |.  C3                  retn
00462A8B  |>  50                  push    eax                              ;  压入N
00462A8C  |.  8B8424 18020000     mov     eax, dword ptr [esp+218]
00462A93  |.  51                  push    ecx                              ;  长度512
00462A94  |.  8D4C24 0C           lea     ecx, dword ptr [esp+C]
00462A98  |.  50                  push    eax                              ;  压入密文
00462A99  |.  8D5424 14           lea     edx, dword ptr [esp+14]
00462A9D  |.  51                  push    ecx
00462A9E  |.  52                  push    edx                              ;  接受返回信息的buff
00462A9F  |.  E8 AC000000         call    00462B50                         ;  跟进去看下


00462B50  /$  8B4424 10           mov     eax, dword ptr [esp+10]
00462B54  |.  8B4C24 0C           mov     ecx, dword ptr [esp+C]
00462B58  |.  81EC 10080000       sub     esp, 810
00462B5E  |.  8D5424 00           lea     edx, dword ptr [esp]
00462B62  |.  53                  push    ebx
00462B63  |.  56                  push    esi
00462B64  |.  57                  push    edi
00462B65  |.  50                  push    eax                              ;  压入0x200
00462B66  |.  51                  push    ecx                              ;  压入密文
00462B67  |.  68 81000000         push    81
00462B6C  |.  52                  push    edx                              ;  接收buff
00462B6D  |.  E8 6EA8FCFF         call    0042D3E0                         ;  通过结果观察,应该是把密文倒置
00462B72  |.  8BBC24 40080000     mov     edi, dword ptr [esp+840]
00462B79  |.  68 00020000         push    200
00462B7E  |.  8D8C24 24020000     lea     ecx, dword ptr [esp+224]
00462B85  |.  8D47 04             lea     eax, dword ptr [edi+4]
00462B88  |.  50                  push    eax
00462B89  |.  68 81000000         push    81
00462B8E  |.  51                  push    ecx
00462B8F  |.  E8 4CA8FCFF         call    0042D3E0                         ;  把N倒置
00462B94  |.  8D97 04020000       lea     edx, dword ptr [edi+204]
00462B9A  |.  68 00020000         push    200
00462B9F  |.  52                  push    edx
00462BA0  |.  8D8424 3C040000     lea     eax, dword ptr [esp+43C]
00462BA7  |.  68 81000000         push    81
00462BAC  |.  50                  push    eax
00462BAD  |.  E8 2EA8FCFF         call    0042D3E0                         ;  把4E3064倒置,是一个全0区域
00462BB2  |.  8D8C24 40020000     lea     ecx, dword ptr [esp+240]
00462BB9  |.  68 81000000         push    81
00462BBE  |.  51                  push    ecx
00462BBF  |.  E8 7CAFFCFF         call    0042DB40                         ;  计算倒置后的N的长度
00462BC4  |.  8D9424 4C040000     lea     edx, dword ptr [esp+44C]         ;  返回eax=80,80*4=0x200=512
00462BCB  |.  68 81000000         push    81
00462BD0  |.  52                  push    edx
00462BD1  |.  8BF0                mov     esi, eax
00462BD3  |.  E8 68AFFCFF         call    0042DB40                         ;  计算长度,edx=12ed34指向数值是0x10001,应该是rsa的E
00462BD8  |.  83C4 40             add     esp, 40                          ;  返回eax=1
00462BDB  |.  8BD8                mov     ebx, eax
00462BDD  |.  8D8424 10020000     lea     eax, dword ptr [esp+210]
00462BE4  |.  8D4C24 0C           lea     ecx, dword ptr [esp+C]
00462BE8  |.  56                  push    esi
00462BE9  |.  50                  push    eax
00462BEA  |.  51                  push    ecx
00462BEB  |.  E8 10AFFCFF         call    0042DB00
00462BF0  |.  83C4 0C             add     esp, 0C
00462BF3  |.  85C0                test    eax, eax
00462BF5  |.  7C 0F               jl      short 00462C06                   ;  跳
00462BF7  |.  5F                  pop     edi
00462BF8  |.  5E                  pop     esi
00462BF9  |.  B8 01040000         mov     eax, 401
00462BFE  |.  5B                  pop     ebx
00462BFF  |.  81C4 10080000       add     esp, 810
00462C05  |.  C3                  retn
00462C06  |>  8D9424 10020000     lea     edx, dword ptr [esp+210]
00462C0D  |.  56                  push    esi                              ;  esi=0x80
00462C0E  |.  52                  push    edx                              ;  指向一个512byte区域,应该是rsa的N
00462C0F  |.  8D8424 1C040000     lea     eax, dword ptr [esp+41C]
00462C16  |.  53                  push    ebx                              ;  edx=1
00462C17  |.  8D4C24 18           lea     ecx, dword ptr [esp+18]
00462C1B  |.  50                  push    eax                              ;  指向一个地址,地址的值是0x010001 应该是rsa的e
00462C1C  |.  8D9424 28060000     lea     edx, dword ptr [esp+628]
00462C23  |.  51                  push    ecx                              ;  密文
00462C24  |.  52                  push    edx                              ;  指向接收解密后字符串
00462C25  |.  E8 46ADFCFF         call    0042D970                         ;  应该是rsa public解密


我用rsatool2生成了4096长度的d,n,e,我把N替换到里面512byte部分之后,把授权文件替换成我用rsatool2加密的密文,运行时候N和密文都是正确的,但却解不出明文,对rsa第一次接触,只看了些资料就乱整了,不知道是不是哪里没对,文件在附件里,求指导。。谢谢。。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
  • c.rar (249.92kb,6次下载)
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 276
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
1024目前基本都无解还有人用这么长的?
2013-5-25 23:33
0
雪    币: 177
活跃值: (84)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是啊,而且这软件还是09年出的,一直没更新,坑爹啊。难道我替换N的方法不对?还是他的RSA不是标准算法?
2013-5-26 01:24
0
雪    币: 157
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也碰到这样的情况了,就是不能解密正确的
2013-10-19 11:01
0
游客
登录 | 注册 方可回帖
返回
//