首页
社区
课程
招聘
[原创]修改RSATool2v17工具使之支持小写a~f输入&测试时支持16进制字符串
发表于: 2026-8-23 11:52 1182

[原创]修改RSATool2v17工具使之支持小写a~f输入&测试时支持16进制字符串

2026-8-23 11:52
1182

工具下载链接: ff1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6@1L8$3!0D9i4K6u0W2K9$3q4F1P5s2g2W2i4K6u0W2j5$3!0E0i4K6u0r3K9h3&6V1k6i4S2Q4x3X3c8V1k6i4c8S2K9h3I4Q4x3X3b7I4x3e0k6Q4x3X3g2Z5N6r3@1`.


;;;--------------对于输入RSA的N,E,D字符串处理子程序----------------------------
004012D4  SUB       ESP,00000BB8
004012DA  CMP       ECX,000005DB
004012E0  PUSH      EBX
004012E1  PUSH      EBP
004012E2  PUSH      EDI
004012E3  JG        004014B6
004012E9  MOV       EAX,[ESP+00000BD0]
004012F0  XOR       EBX,EBX
004012F2  CMP       EAX,EBX
004012F4  JZ        004014B6
004012FA  MOV       EBP,[ESP+00000BC8]
00401301  CMP       EBP,EBX
00401303  JZ        004014B6
00401309  MOV       EDX,[ESP+00000BCC]
00401310  PUSH      ECX
00401311  LEA       ECX,[ESP+10]
00401315  PUSH      ECX
00401316  PUSH      EAX
00401317  PUSH      EDX
00401318  CALL      [USER32!GetDlgItemTextA]
0040131E  CMP       EAX,EBX
00401320  JZ        004014B6
00401326  MOV       ECX,[0041E240]
0040132C  SUB       ECX,EBX
0040132E  JZ        0040136C        ;输入为10进制串
00401330  DEC       ECX
00401331  JZ        0040135A        ;输入为16进制串
00401333  DEC       ECX
00401334  JZ        00401348        ;输入为60进制串
00401336  MOV       ECX,[0041E244]
0040133C  MOV       DWORD PTR [ECX+00000238],00000100
00401346  JMP       0040137C
00401348  MOV       EDX,[0041E244]
0040134E  MOV       DWORD PTR [EDX+00000238],0000003C
00401358  JMP       0040137C
0040135A  MOV       ECX,[0041E244]
00401360  MOV       DWORD PTR [ECX+00000238],00000010
0040136A  JMP       0040137C
0040136C  MOV       EDX,[0041E244]
00401372  MOV       DWORD PTR [EDX+00000238],0000000A
0040137C  MOV       EDI,[0041E240]
00401382  PUSH      ESI
00401383  MOV       ECX,EDI
00401385  SUB       ECX,EBX
00401387  JZ        00401437        ;转输入的10进制串处理
0040138D  DEC       ECX
0040138E  JZ        0040140B        ;转输入的16进制串处理
00401390  DEC       ECX
00401391  JZ        004013D5        ;转输入的60进制串处理
00401393  XOR       EDX,EDX
00401395  XOR       ESI,ESI
00401397  CMP       EAX,EBX
00401399  JLE       00401457
0040139F  MOV       CL,[EDX+ESP+10]
004013A3  CMP       CL,2F
004013A6  JAE       004013AD
004013A8  CMP       CL,2B
004013AB  JNZ       004013CB
004013AD  CMP       CL,39
004013B0  JBE       004013B7
004013B2  CMP       CL,41
004013B5  JB        004013CB
004013B7  CMP       CL,5A
004013BA  JBE       004013C1
004013BC  CMP       CL,61
004013BF  JB        004013CB
004013C1  CMP       CL,7A
004013C4  JA        004013CB
004013C6  MOV       [ESI+ESP+10],CL
004013CA  INC       ESI
004013CB  INC       EDX
004013CC  CMP       EDX,EAX
004013CE  JL        0040139F
004013D0  JMP       00401457
004013D5  XOR       EDX,EDX
004013D7  XOR       ESI,ESI
004013D9  CMP       EAX,EBX
004013DB  JLE       00401457
004013DD  MOV       CL,[EDX+ESP+10]
004013E1  CMP       CL,30
004013E4  JB        00401404
004013E6  CMP       CL,5A
004013E9  JBE       004013F0
004013EB  CMP       CL,61
004013EE  JB        00401404
004013F0  CMP       CL,39
004013F3  JBE       004013FA
004013F5  CMP       CL,41
004013F8  JB        00401404
004013FA  CMP       CL,78
004013FD  JA        00401404
004013FF  MOV       [ESI+ESP+10],CL
00401403  INC       ESI
00401404  INC       EDX
00401405  CMP       EDX,EAX
00401407  JL        004013DD
00401409  JMP       00401457
0040140B  XOR       EDX,EDX
0040140D  XOR       ESI,ESI
0040140F  CMP       EAX,EBX
00401411  JLE       00401457
00401413  MOV       CL,[EDX+ESP+10]
00401417  CMP       CL,30            ;判断是不是
0040141A  JB        00401430         ;"0"~~"9"
0040141C  CMP       CL,39            ;及大写的
0040141F  JBE       00401426         ;"A"~~"F"
00401421  CMP       CL,41            ;不是则
00401424  JB        00401430         ;去掉输入的
00401426  CMP       CL,46            ;字符
00401429  JA        00401430         ;
0040142B  MOV       [ESI+ESP+10],CL  ;是"0"~~"9"
0040142F  INC       ESI              ;或"A"~~"F"保存
00401430  INC       EDX
00401431  CMP       EDX,EAX
00401433  JL        00401413
00401435  JMP       00401457
00401437  XOR       EDX,EDX
00401439  XOR       ESI,ESI
0040143B  CMP       EAX,EBX
0040143D  JLE       00401457
0040143F  MOV       CL,[EDX+ESP+10]
00401443  CMP       CL,30
00401446  JB        00401452
00401448  CMP       CL,39
0040144B  JA        00401452
0040144D  MOV       [ESI+ESP+10],CL
00401451  INC       ESI
00401452  INC       EDX
00401453  CMP       EDX,EAX
00401455  JL        0040143F
00401457  MOV       [ESI+ESP+10],BL
0040145B  CMP       ESI,EBX
0040145D  POP       ESI
0040145E  JZ        004014B6
00401460  CMP       EDI,03
00401463  JNZ       0040149E
00401465  LEA       EAX,[ESP+000005E8]
0040146C  LEA       ECX,[ESP+0C]
00401470  PUSH      EAX
00401471  PUSH      ECX
00401472  CALL      00401030
00401477  MOV       EDX,[0041E244]
0040147D  MOV       [EDX+00000248],EAX
00401483  LEA       EAX,[ESP+000005F0]
0040148A  PUSH      EAX
0040148B  PUSH      EBP
0040148C  CALL      004074F0
00401491  ADD       ESP,10
00401494  POP       EDI
00401495  POP       EBP
00401496  POP       EBX
00401497  ADD       ESP,00000BB8
0040149D  RET
0040149E  LEA       ECX,[ESP+0C]
004014A2  PUSH      ECX
004014A3  PUSH      EBP
004014A4  CALL      004074F0
004014A9  ADD       ESP,08
004014AC  POP       EDI
004014AD  POP       EBP
004014AE  POP       EBX
004014AF  ADD       ESP,00000BB8
004014B5  RET
004014B6  POP       EDI
004014B7  POP       EBP
004014B8  XOR       EAX,EAX
004014BA  POP       EBX
004014BB  ADD       ESP,00000BB8
004014C1  RET
;;;---------------------下面是测试加密的子程序代码---------------------------------
00405C80  MOV       EAX,00001100
00405C85  CALL      0040E970
00405C8A  PUSH      EBX
00405C8B  PUSH      EBP
00405C8C  PUSH      ESI
00405C8D  PUSH      EDI
00405C8E  MOV       EDI,[ESP+00001114]
00405C95  LEA       EAX,[ESP+10]
00405C99  PUSH      000000FF
00405C9E  PUSH      EAX
00405C9F  PUSH      000003F3
00405CA4  PUSH      EDI
00405CA5  CALL      [USER32!GetDlgItemTextA] ;;;取测试输入要加密的字符串
00405CAB  TEST      EAX,EAX
00405CAD  JNZ       00405CBA
00405CAF  POP       EDI
00405CB0  POP       ESI
00405CB1  POP       EBP
00405CB2  POP       EBX
00405CB3  ADD       ESP,00001100
00405CB9  RET
00405CBA  MOV       ECX,[0041E240]
00405CC0  PUSH      00
00405CC2  MOV       [0041E248],ECX
00405CC8  MOV       DWORD PTR [0041E240],00000001
00405CD2  CALL      00407A80
00405CD7  MOV       EDX,[0041E470]
00405CDD  PUSH      000004D2
00405CE2  MOV       EBP,EAX
00405CE4  PUSH      00000404      ;;;公共密钥E的ID,(私钥D的ID=3F5)
00405CE9  PUSH      EDX
00405CEA  PUSH      EBP
00405CEB  CALL      004012D0
00405CF0  ADD       ESP,14
00405CF3  TEST      EAX,EAX
00405CF5  JNZ       00405D2A
00405CF7  PUSH      10
00405CF9  PUSH      00418FF4 ; "Error"
00405CFE  PUSH      00418FDC ; "Parameter E is invalid"
00405D03  PUSH      EDI
00405D04  CALL      [USER32!MessageBoxA]
00405D0A  MOV       EAX,[0041E248]
00405D0F  PUSH      EBP
00405D10  MOV       [0041E240],EAX
00405D15  CALL      00408010
00405D1A  ADD       ESP,04
00405D1D  XOR       EAX,EAX
00405D1F  POP       EDI
00405D20  POP       ESI
00405D21  POP       EBP
00405D22  POP       EBX
00405D23  ADD       ESP,00001100
00405D29  RET
00405D2A  MOV       ECX,[0041E248]
00405D30  PUSH      00
00405D32  MOV       [0041E240],ECX
00405D38  CALL      00407A80
00405D3D  MOV       EDX,[0041E244]
00405D43  MOV       ESI,EAX
00405D45  LEA       EAX,[ESP+14]
00405D49  MOV       EBX,00000100
00405D4E  PUSH      EAX
00405D4F  PUSH      ESI
00405D50  MOV       [EDX+00000238],EBX
00405D56  CALL      004074F0           ;;;转换输入的测试加密字符串
00405D5B  MOV       ECX,[0041E470]
00405D61  ADD       ESP,0C
00405D64  PUSH      00
00405D66  PUSH      00
00405D68  PUSH      00000147
00405D6D  PUSH      000003FA
00405D72  PUSH      ECX
00405D73  CALL      [USER32!SendDlgItemMessageA]
00405D79  MOV       [0041E240],EAX
00405D7E  SUB       EAX,00
00405D81  JZ        00405DBA
00405D83  DEC       EAX
00405D84  JZ        00405DA8
00405D86  DEC       EAX
00405D87  JZ        00405D97
00405D89  MOV       EDX,[0041E244]
00405D8F  MOV       [EDX+00000238],EBX
00405D95  JMP       00405DCA
00405D97  MOV       EAX,[0041E244]
00405D9C  MOV       DWORD PTR [EAX+00000238],0000003C
00405DA6  JMP       00405DCA
00405DA8  MOV       ECX,[0041E244]
00405DAE  MOV       DWORD PTR [ECX+00000238],00000010
00405DB8  JMP       00405DCA
00405DBA  MOV       EDX,[0041E244]
00405DC0  MOV       DWORD PTR [EDX+00000238],0000000A
00405DCA  PUSH      00
00405DCC  CALL      00407A80
00405DD1  MOV       EBX,EAX
00405DD3  MOV       EAX,[0041E470]
00405DD8  PUSH      000004D3
00405DDD  PUSH      000003F4
00405DE2  PUSH      EAX
00405DE3  PUSH      EBX
00405DE4  CALL      004012D0
00405DE9  ADD       ESP,14
00405DEC  TEST      EAX,EAX
00405DEE  JNZ       00405E1F
00405DF0  PUSH      10
00405DF2  PUSH      00418FF4 ; "Error"
00405DF7  PUSH      0041953C ; "Parameter N is invalid"
00405DFC  PUSH      EDI
00405DFD  CALL      [USER32!MessageBoxA]
00405E03  PUSH      EBX
00405E04  CALL      00408010
00405E09  PUSH      ESI
00405E0A  CALL      00408010
00405E0F  ADD       ESP,08
00405E12  XOR       EAX,EAX
00405E14  POP       EDI
00405E15  POP       ESI
00405E16  POP       EBP
00405E17  POP       EBX
00405E18  ADD       ESP,00001100
00405E1E  RET
00405E1F  PUSH      EBX
00405E20  PUSH      ESI
00405E21  CALL      004086F0
00405E26  ADD       ESP,08
00405E29  CMP       EAX,-01
00405E2C  JZ        00405E41
00405E2E  PUSH      30
00405E30  PUSH      00418FD4 ; "Warning"
00405E35  PUSH      0041948C ; "Your message (M) is > N
00405E3A  PUSH      EDI
00405E3B  CALL      [USER32!MessageBoxA]
00405E41  PUSH      00
00405E43  CALL      00407A80
00405E48  MOV       EDI,EAX
00405E4A  PUSH      EDI
00405E4B  PUSH      EBX
00405E4C  PUSH      EBP
00405E4D  PUSH      ESI
00405E4E  CALL      0040CDC0
00405E53  MOV       EAX,[0041E240]
00405E58  ADD       ESP,14
00405E5B  CMP       EAX,03
00405E5E  JNZ       00405E89
00405E60  LEA       ECX,[ESP+00000910]
00405E67  PUSH      ECX
00405E68  PUSH      EDI
00405E69  CALL      004076C0
00405E6E  PUSH      EAX
00405E6F  LEA       EDX,[ESP+0000011C]
00405E76  LEA       EAX,[ESP+0000091C]
00405E7D  PUSH      EDX
00405E7E  PUSH      EAX
00405E7F  CALL      004010F0
00405E84  ADD       ESP,14
00405E87  JMP       00405E9A
00405E89  LEA       ECX,[ESP+00000110]
00405E90  PUSH      ECX
00405E91  PUSH      EDI
00405E92  CALL      004076C0
00405E97  ADD       ESP,08
00405E9A  MOV       EAX,[ESP+00001114]
00405EA1  LEA       EDX,[ESP+00000110]
00405EA8  PUSH      EDX
00405EA9  PUSH      000003FD
00405EAE  PUSH      EAX
00405EAF  CALL      [USER32!SetDlgItemTextA]
00405EB5  MOV       ECX,[ESP+00001114]
00405EBC  PUSH      00419450 ; "Message encrypted: C=M^
00405EC1  PUSH      00
00405EC3  PUSH      0C
00405EC5  PUSH      00000400
00405ECA  PUSH      ECX
00405ECB  CALL      [USER32!SendDlgItemMessageA]
00405ED1  PUSH      ESI
00405ED2  CALL      00408010
00405ED7  PUSH      EBP
00405ED8  CALL      00408010
00405EDD  PUSH      EBX
00405EDE  CALL      00408010
00405EE3  PUSH      EDI
00405EE4  CALL      00408010
00405EE9  ADD       ESP,10
00405EEC  MOV       EAX,00000001
00405EF1  POP       EDI
00405EF2  POP       ESI
00405EF3  POP       EBP
00405EF4  POP       EBX
00405EF5  ADD       ESP,00001100
00405EFB  RET
;;;---------------------测试解密的子程序代码如下---------------------------------
00405F00  SUB       ESP,00000908
00405F06  LEA       EAX,[ESP+00000108]
00405F0D  PUSH      EBX
00405F0E  PUSH      EBP
00405F0F  PUSH      ESI
00405F10  PUSH      EDI
00405F11  MOV       EDI,[ESP+0000091C]
00405F18  PUSH      000007FF
00405F1D  PUSH      EAX
00405F1E  PUSH      000003FD
00405F23  PUSH      EDI
00405F24  CALL      [USER32!GetDlgItemTextA]
00405F2A  TEST      EAX,EAX
00405F2C  JNZ       00405F39
00405F2E  POP       EDI
00405F2F  POP       ESI
00405F30  POP       EBP
00405F31  POP       EBX
00405F32  ADD       ESP,00000908
00405F38  RET
00405F39  MOV       ECX,[0041E470]
00405F3F  PUSH      00
00405F41  PUSH      00
00405F43  PUSH      00000147
00405F48  PUSH      000003FA
00405F4D  PUSH      ECX
00405F4E  CALL      [USER32!SendDlgItemMessageA]
00405F54  MOV       [0041E240],EAX
00405F59  SUB       EAX,00
00405F5C  JZ        00405F99
00405F5E  DEC       EAX
00405F5F  JZ        00405F87
00405F61  DEC       EAX
00405F62  JZ        00405F76
00405F64  MOV       EDX,[0041E244]
00405F6A  MOV       DWORD PTR [EDX+00000238],00000100
00405F74  JMP       00405FA9
00405F76  MOV       EAX,[0041E244] ; "@;>"
00405F7B  MOV       DWORD PTR [EAX+00000238],0000003C
00405F85  JMP       00405FA9
00405F87  MOV       ECX,[0041E244]
00405F8D  MOV       DWORD PTR [ECX+00000238],00000010
00405F97  JMP       00405FA9
00405F99  MOV       EDX,[0041E244]
00405F9F  MOV       DWORD PTR [EDX+00000238],0000000A
00405FA9  PUSH      00
00405FAB  CALL      00407A80
00405FB0  PUSH      000004D3
00405FB5  MOV       EBX,EAX
00405FB7  PUSH      000003FD
00405FBC  PUSH      EDI
00405FBD  PUSH      EBX
00405FBE  CALL      004012D0
00405FC3  ADD       ESP,14
00405FC6  TEST      EAX,EAX
00405FC8  JNZ       00405FF3
00405FCA  PUSH      10
00405FCC  PUSH      00418FF4 ; "Error"
00405FD1  PUSH      004195C0 ; "Parameter C is invalid"
00405FD6  PUSH      EDI
00405FD7  CALL      [USER32!MessageBoxA]
00405FDD  PUSH      EBX
00405FDE  CALL      00408010
00405FE3  ADD       ESP,04
00405FE6  XOR       EAX,EAX
00405FE8  POP       EDI
00405FE9  POP       ESI
00405FEA  POP       EBP
00405FEB  POP       EBX
00405FEC  ADD       ESP,00000908
00405FF2  RET
00405FF3  PUSH      00
00405FF5  CALL      00407A80
00405FFA  MOV       ESI,EAX
00405FFC  MOV       EAX,[0041E470]
00406001  PUSH      000004D3
00406006  PUSH      000003F5           ;;;私钥D的ID(公共密钥E的ID=404)
0040600B  PUSH      EAX
0040600C  PUSH      ESI
0040600D  MOV       [ESP+28],ESI
00406011  CALL      004012D0
00406016  ADD       ESP,14
00406019  TEST      EAX,EAX
0040601B  JNZ       0040604C
0040601D  PUSH      10
0040601F  PUSH      00418FF4 ; "Error"
00406024  PUSH      004195A8 ; "Parameter D is invalid"
00406029  PUSH      EDI
0040602A  CALL      [USER32!MessageBoxA]
00406030  PUSH      ESI
00406031  CALL      00408010
00406036  PUSH      EBX
00406037  CALL      00408010
0040603C  ADD       ESP,08
0040603F  XOR       EAX,EAX
00406041  POP       EDI
00406042  POP       ESI
00406043  POP       EBP
00406044  POP       EBX
00406045  ADD       ESP,00000908
0040604B  RET
0040604C  PUSH      00
0040604E  CALL      00407A80
00406053  MOV       ECX,[0041E470]
00406059  PUSH      000004D3
0040605E  MOV       EBP,EAX
00406060  PUSH      000003F4
00406065  PUSH      ECX
00406066  PUSH      EBP
00406067  MOV       [ESP+24],EBP
0040606B  CALL      004012D0
00406070  ADD       ESP,14
00406073  TEST      EAX,EAX
00406075  JNZ       004060AC
00406077  PUSH      10
00406079  PUSH      00418FF4 ; "Error"
0040607E  PUSH      0041953C ; "Parameter N is invalid"
00406083  PUSH      EDI
00406084  CALL      [USER32!MessageBoxA]
0040608A  PUSH      ESI
0040608B  CALL      00408010
00406090  PUSH      EBX
00406091  CALL      00408010
00406096  PUSH      EBP
00406097  CALL      00408010
0040609C  ADD       ESP,0C
0040609F  XOR       EAX,EAX
004060A1  POP       EDI
004060A2  POP       ESI
004060A3  POP       EBP
004060A4  POP       EBX
004060A5  ADD       ESP,00000908
004060AB  RET
004060AC  PUSH      00
004060AE  CALL      00407A80
004060B3  MOV       EDX,[ESP+14]
004060B7  MOV       EBP,EAX
004060B9  PUSH      EBP
004060BA  PUSH      EDX
004060BB  PUSH      ESI
004060BC  PUSH      EBX
004060BD  CALL      0040CDC0
004060C2  MOV       EAX,[0041E244] ; "@;>"
004060C7  LEA       ECX,[ESP+2C]
004060CB  PUSH      ECX
004060CC  PUSH      EBP
004060CD  MOV       DWORD PTR [EAX+00000238],00000100
004060D7  CALL      004076C0
004060DC  ADD       ESP,1C
004060DF  LEA       EDX,[ESP+18]
004060E3  PUSH      EDX
004060E4  PUSH      000003FD
004060E9  PUSH      EDI
004060EA  CALL      [USER32!SetDlgItemTextA]
004060F0  LEA       EAX,[ESP+00000118]
004060F7  PUSH      000000FF
004060FC  PUSH      EAX
004060FD  PUSH      000003F3
00406102  PUSH      EDI
00406103  CALL      [USER32!GetDlgItemTextA]
00406109  LEA       ESI,[ESP+00000118]
00406110  LEA       EAX,[ESP+18]
00406114  MOV       DL,[EAX]
00406116  MOV       CL,DL
00406118  CMP       DL,[ESI]
0040611A  JNZ       00406138
0040611C  TEST      CL,CL
0040611E  JZ        00406134
00406120  MOV       DL,[EAX+01]
00406123  MOV       CL,DL
00406125  CMP       DL,[ESI+01]
00406128  JNZ       00406138
0040612A  ADD       EAX,02
0040612D  ADD       ESI,02
00406130  TEST      CL,CL
00406132  JNZ       00406114
00406134  XOR       EAX,EAX
00406136  JMP       0040613D
00406138  SBB       EAX,EAX
0040613A  SBB       EAX,-01
0040613D  TEST      EAX,EAX
0040613F  JNZ       00406148
00406141  PUSH      00419584 ; "Ciphertext decrypted: M
00406146  JMP       0040614D
00406148  PUSH      00419554 ; "Decryption M=C^D MOD N
0040614D  PUSH      00
0040614F  PUSH      0C
00406151  PUSH      00000400
00406156  PUSH      EDI
00406157  CALL      [USER32!SendDlgItemMessageA]
0040615D  PUSH      EBP
0040615E  CALL      00408010
00406163  MOV       EAX,[ESP+18]
00406167  PUSH      EAX
00406168  CALL      00408010
0040616D  MOV       ECX,[ESP+18]
00406171  PUSH      ECX
00406172  CALL      00408010
00406177  PUSH      EBX
00406178  CALL      00408010
0040617D  ADD       ESP,10
00406180  MOV       EAX,00000001
00406185  POP       EDI
00406186  POP       ESI
00406187  POP       EBP
00406188  POP       EBX
00406189  ADD       ESP,00000908
0040618F  RET
 程序运行时可发现 4150F0 后面有大量空间可以填写补丁代码---填写后补丁代码如下:
;;;--------------加入判断小写'a'~~'f'补丁代码部分------------------------------------
004150F0  80F946              CMP       CL,46        ;
004150F3  0F8632C3FEFF        JBE       0040142B     ;如果小于'F',继续执行原来代码
004150F9  80F961              CMP       CL,61        ;
004150FC  0F822EC3FEFF        JB        00401430     ;不是 'a'~~'f'
00415102  80F966              CMP       CL,66        ;
00415105  0F8725C3FEFF        JA        00401430     ;则跳过该字符
0041510B  80E920              SUB       CL,20        ;是 'a'~~'f'则转换为大写的'A'~~'F'
0041510E  E918C3FEFF          JMP       0040142B     ;
;;;--------------加入处理16进制字符串处理的补丁代码-----------------------------------
00415113  803848              CMP       BYTE PTR [EAX],48     ;输入16进制字符串格式定义
00415116  7525                JNZ       0041513D              ;第一个字符必须是大写'H'
00415118  60                  PUSHAD                          ;否则则按原来方式处理
00415119  BA02000000          MOV       EDX,00000002          ;第二个字符必须是'>'或者'<'
0041511E  8078013C            CMP       BYTE PTR [EAX+01],3C  ;否则则按原来方式处理
00415122  7408                JZ        0041512C              ;'>',输入串按大端模式处理
00415124  8078013E            CMP       BYTE PTR [EAX+01],3E  ;'<',输入串按小端模式处理
00415128  7512                JNZ       0041513C              ;后面跟的输入串长度必须是偶数
0041512A  F7DA                NEG       EDX                   ;且范围必须是
0041512C  8BF8                MOV       EDI,EAX               ;'0'~~'9'
0041512E  8D5802              LEA       EBX,[EAX+02]          ;'A'~~'F'
00415131  33C0                XOR       EAX,EAX               ;'a'~~'f'
00415133  B900040000          MOV       ECX,00000400          ;否则都走原来方式处理
00415138  F2AE                REPNZ SCASB                     ;
0041513A  7406                JZ        00415142              ;
0041513C  61                  POPAD                           ;
0041513D  E9AE23FFFF          JMP       004074F0              ;
00415142  F7C701000000        TEST      EDI,00000001          ;
00415148  74F2                JZ        0041513C              ;
0041514A  8D4FFF              LEA       ECX,[EDI-01]
0041514D  2BCB                SUB       ECX,EBX               ;
0041514F  E3EB                JECXZ     0041513C              ;
00415151  D1E9                SHR       ECX,1                 ;
00415153  8D4103              LEA       EAX,[ECX+03]          ;
00415156  C1E802              SHR       EAX,02                ;
00415159  8906                MOV       [ESI],EAX             ;
0041515B  80FA02              CMP       DL,02                 ;
0041515E  7405                JZ        00415165
00415160  90                  NOP
00415161  90                  NOP
00415162  8D5FFD              LEA       EBX,[EDI-03]
00415165  8D7E04              LEA       EDI,[ESI+04]
00415168  668B03              MOV       AX,[EBX]
0041516B  3C30                CMP       AL,30
0041516D  72CD                JB        0041513C
0041516F  80FC30              CMP       AH,30
00415172  72C8                JB        0041513C
00415174  3C66                CMP       AL,66
00415176  77C4                JA        0041513C
00415178  80FC66              CMP       AH,66
0041517B  77BF                JA        0041513C
0041517D  3C39                CMP       AL,39
0041517F  760E                JBE       0041518F
00415181  3C41                CMP       AL,41
00415183  72B7                JB        0041513C
00415185  3C46                CMP       AL,46
00415187  7604                JBE       0041518D
00415189  3C61                CMP       AL,61
0041518B  72AF                JB        0041513C
0041518D  2C07                SUB       AL,07
0041518F  80FC39              CMP       AH,39
00415192  7612                JBE       004151A6
00415194  80FC41              CMP       AH,41
00415197  72A3                JB        0041513C
00415199  80FC46              CMP       AH,46
0041519C  7605                JBE       004151A3
0041519E  80FC61              CMP       AH,61
004151A1  7299                JB        0041513C
004151A3  80EC07              SUB       AH,07
004151A6  80E40F              AND       AH,0F
004151A9  C0E004              SHL       AL,04
004151AC  0AC4                OR        AL,AH
004151AE  AA                  STOSB
004151AF  01D3                ADD       EBX,EDX
004151B1  E2B5                LOOP      00415168
004151B3  61                  POPAD
004151B4  C3                  RET
;;;-------------为了执行补丁需要再原来两处代码位置加入跳转指令-----
00405D56  E8B8F30000          CALL      00415113      ;;;修改该处代码转入16进制串补丁部分
00401426  E9C53C0100          JMP       004150F0      ;;;修改该处代码转入'a'~~'f'补丁部分
;;;---------原来程序使用UPX压缩,可以等执行完解压后把补丁代码搬到指定位置----------
00425940  61                  POPAD
00425941  BE00804100          MOV       ESI,00418000
00425946  8DBE0090FEFF        LEA       EDI,[ESI+FFFE9000]
0042594C  57                  PUSH      EDI
0042594D  83CDFF              OR        EBP,-01
00425950  EB10                JMP       00425962
00425952  EB00                JMP       00425954
00425954  EBEA                JMP       00425940
00425956  EBE8                JMP       00425940
00425958  8A06                MOV       AL,[ESI]
0042595A  46                  INC       ESI
0042595B  8807                MOV       [EDI],AL
0042595D  47                  INC       EDI
0042595E  01DB                ADD       EBX,EBX
00425960  7507                JNZ       00425969
00425962  8B1E                MOV       EBX,[ESI]
00425964  83EEFC              SUB       ESI,-04
00425967  11DB                ADC       EBX,EBX
00425969  72ED                JB        00425958
0042596B  B801000000          MOV       EAX,00000001
00425970  01DB                ADD       EBX,EBX
00425972  7507                JNZ       0042597B
00425974  8B1E                MOV       EBX,[ESI]
00425976  83EEFC              SUB       ESI,-04
00425979  11DB                ADC       EBX,EBX
0042597B  11C0                ADC       EAX,EAX
0042597D  01DB                ADD       EBX,EBX
0042597F  73EF                JAE       00425970
00425981  7509                JNZ       0042598C
00425983  8B1E                MOV       EBX,[ESI]
00425985  83EEFC              SUB       ESI,-04
00425988  11DB                ADC       EBX,EBX
0042598A  73E4                JAE       00425970
0042598C  31C9                XOR       ECX,ECX
0042598E  83E803              SUB       EAX,03
00425991  720D                JB        004259A0
00425993  C1E008              SHL       EAX,08
00425996  8A06                MOV       AL,[ESI]
00425998  46                  INC       ESI
00425999  83F0FF              XOR       EAX,-01
0042599C  7474                JZ        00425A12
0042599E  89C5                MOV       EBP,EAX
004259A0  01DB                ADD       EBX,EBX
004259A2  7507                JNZ       004259AB
004259A4  8B1E                MOV       EBX,[ESI]
004259A6  83EEFC              SUB       ESI,-04
004259A9  11DB                ADC       EBX,EBX
004259AB  11C9                ADC       ECX,ECX
004259AD  01DB                ADD       EBX,EBX
004259AF  7507                JNZ       004259B8
004259B1  8B1E                MOV       EBX,[ESI]
004259B3  83EEFC              SUB       ESI,-04
004259B6  11DB                ADC       EBX,EBX
004259B8  11C9                ADC       ECX,ECX
004259BA  7520                JNZ       004259DC
004259BC  41                  INC       ECX
004259BD  01DB                ADD       EBX,EBX
004259BF  7507                JNZ       004259C8
004259C1  8B1E                MOV       EBX,[ESI]
004259C3  83EEFC              SUB       ESI,-04
004259C6  11DB                ADC       EBX,EBX
004259C8  11C9                ADC       ECX,ECX
004259CA  01DB                ADD       EBX,EBX
004259CC  73EF                JAE       004259BD
004259CE  7509                JNZ       004259D9
004259D0  8B1E                MOV       EBX,[ESI]
004259D2  83EEFC              SUB       ESI,-04
004259D5  11DB                ADC       EBX,EBX
004259D7  73E4                JAE       004259BD
004259D9  83C102              ADD       ECX,02
004259DC  81FD00F3FFFF        CMP       EBP,FFFFF300
004259E2  83D101              ADC       ECX,01
004259E5  8D142F              LEA       EDX,[EBP+EDI]
004259E8  83FDFC              CMP       EBP,-04
004259EB  760F                JBE       004259FC
004259ED  8A02                MOV       AL,[EDX]
004259EF  42                  INC       EDX
004259F0  8807                MOV       [EDI],AL
004259F2  47                  INC       EDI
004259F3  49                  DEC       ECX
004259F4  75F7                JNZ       004259ED
004259F6  E963FFFFFF          JMP       0042595E
004259FB  90                  NOP
004259FC  8B02                MOV       EAX,[EDX]
004259FE  83C204              ADD       EDX,04
00425A01  8907                MOV       [EDI],EAX
00425A03  83C704              ADD       EDI,04
00425A06  83E904              SUB       ECX,04
00425A09  77F1                JA        004259FC
00425A0B  01CF                ADD       EDI,ECX
00425A0D  E94CFFFFFF          JMP       0042595E
00425A12  5E                  POP       ESI
00425A13  89F7                MOV       EDI,ESI
00425A15  B97B070000          MOV       ECX,0000077B
00425A1A  8A07                MOV       AL,[EDI]
00425A1C  47                  INC       EDI
00425A1D  2CE8                SUB       AL,E8
00425A1F  3C01                CMP       AL,01
00425A21  77F7                JA        00425A1A
00425A23  803F06              CMP       BYTE PTR [EDI],06
00425A26  75F2                JNZ       00425A1A
00425A28  8B07                MOV       EAX,[EDI]
00425A2A  8A5F04              MOV       BL,[EDI+04]
00425A2D  66C1E808            SHR       AX,08
00425A31  C1C010              ROL       EAX,10
00425A34  86C4                XCHG      AL,AH
00425A36  29F8                SUB       EAX,EDI
00425A38  80EBE8              SUB       BL,E8
00425A3B  01F0                ADD       EAX,ESI
00425A3D  8907                MOV       [EDI],EAX
00425A3F  83C705              ADD       EDI,05
00425A42  89D8                MOV       EAX,EBX
00425A44  E2D9                LOOP      00425A1F
00425A46  8DBE00300200        LEA       EDI,[ESI+00023000]
00425A4C  8B07                MOV       EAX,[EDI]
00425A4E  09C0                OR        EAX,EAX
00425A50  7445                JZ        00425A97
00425A52  8B5F04              MOV       EBX,[EDI+04]
00425A55  8D8430545A0200      LEA       EAX,[ESI+EAX+00025A54]
00425A5C  01F3                ADD       EBX,ESI
00425A5E  50                  PUSH      EAX
00425A5F  83C708              ADD       EDI,08
00425A62  FF96B85A0200        CALL      [ESI+00025AB8]
00425A68  95                  XCHG      EAX,EBP
00425A69  8A07                MOV       AL,[EDI]
00425A6B  47                  INC       EDI
00425A6C  08C0                OR        AL,AL
00425A6E  74DC                JZ        00425A4C
00425A70  89F9                MOV       ECX,EDI
00425A72  7907                JNS       00425A7B
00425A74  0FB707              MOVZX     EAX,WORD PTR [EDI]
00425A77  47                  INC       EDI
00425A78  50                  PUSH      EAX
00425A79  47                  INC       EDI
00425A7A  B95748F2AE          MOV       ECX,AEF24857
00425A7F  55                  PUSH      EBP
00425A80  FF96BC5A0200        CALL      [ESI+00025ABC]
00425A86  09C0                OR        EAX,EAX
00425A88  7407                JZ        00425A91
00425A8A  8903                MOV       [EBX],EAX
00425A8C  83C304              ADD       EBX,04
00425A8F  EBD8                JMP       00425A69
00425A91  FF96C05A0200        CALL      [ESI+00025AC0]
00425A97  60                  PUSHAD
00425A98  E97A90FEFF          JMP       0040EB17
;;;------------------程序解压完成后修改程序中代码加入补丁----------
00425A97  60                  PUSHAD
00425A98  E800000000          CALL      00425A9D              ;                       
00425A9D  5B                  POP       EBX                   ;                       
00425A9E  8D7363              LEA       ESI,[EBX+63]          ;代码补丁数据           
00425AA1  8DBB53F6FEFF        LEA       EDI,[EBX+FFFEF653]    ;需要搬运的位置         
00425AA7  B932000000          MOV       ECX,00000032          ;                       
00425AAC  F3A5                REPZ MOVSD                      ;搬运补丁代码           
00425AAE  8DBBBA02FEFF        LEA       EDI,[EBX+FFFE02BA]    ;支持输入16进制串       
00425AB4  A5                  MOVSD                           ;                       
00425AB5  8DBB89B9FDFF        LEA       EDI,[EBX+FFFDB989]    ;支持小写'a'~~'f'输入   
00425ABB  A5                  MOVSD                           ;                       
00425ABC  A4                  MOVSB                           ;                       
00425ABD  8DBB6A05FEFF        LEA       EDI,[EBX+FFFE056A]    ;测试时用私钥加密                       
00425AC3  66A5                MOVSW                           ;
00425AC5  8DBB4802FEFF        LEA       EDI,[EBX+FFFE0248]    ;测试时用共要解密
00425ACB  66A5                MOVSW                           ;
00425ACD  61                  POPAD
00425ACE  60                  PUSHAD
00425ACF  E94390FEFF          JMP       0040EB17

附件是改后程序其中

RSATool2v17HD.exe 是测试时用私钥加密,用公钥解密

RSATool2v17HN.exe 是测试时用公钥加密,用私钥解密(原程序是这个)


冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。

上传的附件:
收藏
免费 0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回