|
本站严厉禁止求脱求破行为(包含无自我分析直接求思路),如发现此类求助主题请点击“举报”,让我们共同维护优质的学习环境!
300HB
本帖最后由 菜鸟中的菜鸟 于 2016-8-6 15:54 编辑
学习RSA相关的东西,找高手的逆向文章,结果找了个06年发的逆向图文,也是很老的软件了。逆向图文中有几处不明白,所以想请高手帮忙看下。逆向图文中:
00402FBF |. E8 CC190000 CALL Speed_Vi.00404990 ; RSA运算
00402FC4 |. B9 08000000 MOV ECX,8
00402FC9 |. 33C0 XOR EAX,EAX
00402FCB |. 8D7C24 18 LEA EDI,DWORD PTR SS:[ESP+18]
00402FCF |. 6A 08 PUSH 8
00402FD1 |. F3:AB REP STOS DWORD PTR ES:[EDI]
00402FD3 |. 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]
00402FD7 |. C68424 AC0000>MOV BYTE PTR SS:[ESP+AC],6
00402FDF |. 51 PUSH ECX
00402FE0 |. 8D4C24 58 LEA ECX,DWORD PTR SS:[ESP+58]
00402FE4 |. E8 47710000 CALL Speed_Vi.0040A130 ; 输出RSA运算结果 [A44E60--70]
00402FE9 |. B9 08000000 MOV ECX,8
00402FEE |. 33C0 XOR EAX,EAX
00402FF0 |. 8DBC24 800000>LEA EDI,DWORD PTR SS:[ESP+80]
00402FF7 |. F3:AB REP STOS DWORD PTR ES:[EDI] ; 堆栈空出空间
00402FF9 |. 5F POP EDI
00402FFA |> 8A5404 17 /MOV DL,BYTE PTR SS:[ESP+EAX+17]
00402FFE |. 8A4C04 16 |MOV CL,BYTE PTR SS:[ESP+EAX+16]
00403002 |. 885404 7C |MOV BYTE PTR SS:[ESP+EAX+7C],DL
00403006 |. 8B5404 14 |MOV EDX,DWORD PTR SS:[ESP+EAX+14]
0040300A |. 884C04 7D |MOV BYTE PTR SS:[ESP+EAX+7D],CL
0040300E |. 8A4C04 14 |MOV CL,BYTE PTR SS:[ESP+EAX+14]
00403012 |. C1EA 08 |SHR EDX,8
00403015 |. 885404 7E |MOV BYTE PTR SS:[ESP+EAX+7E],DL
00403019 |. 884C04 7F |MOV BYTE PTR SS:[ESP+EAX+7F],CL
0040301D |. 83C0 04 |ADD EAX,4
00403020 |. 83F8 20 |CMP EAX,20
00403023 |.^ 7C D5 \JL SHORT Speed_Vi.00402FFA ; 循环重排序RSA运算结果
00403025 |. 8D5424 7C LEA EDX,DWORD PTR SS:[ESP+7C]
00403029 |. 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]
0040302D |. 52 PUSH EDX
0040302E |. E8 75FE0000 CALL <JMP.&MFC42.#537>
00403033 |. 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10]
00403037 |. 8B4C24 0C MOV ECX,DWORD PTR SS:[ESP+C]
0040303B |. 50 PUSH EAX
0040303C |. 51 PUSH ECX
0040303D |. FFD6 CALL NEAR ESI ; 用户名16进制数与计算结果比较
二、算法小结
1.注册码分为8组,s1、s2、s3、s4、s5、s6、s7、s8
验证前预处理:s7=(s1+s6) xor s7 s8=(s2+s3+s4+s5) xor s8
2.RSA256运算
n=5D79D4F2EAF92557CEE8EC453254F2CA9B43197BD424BB6C44A30D1366C11BB9
e=10001
3. 重排序运算结果
B1BE436A 6A43BEB1
F29961A1 ------> A16199F2
6A85B49E 9EB4856A
4. 重排序的运算结果和用户名16进制数比较,相等则注册成功,不等则失败。
三、算法验证
用RSATool工具,根据n、e,求出p、q、d
p=A4A4B5845A655DA9EF76DED6C373A31B
q=9157E97B62A6CFDD8AAA6FC9557355BB
d=2FD52823261A580196DF9A07CEB9A983654FAB5DD473BC2857780CFCF3D9AC01
用户名m=wzwgp -> wzwg-p -> p000wzwg (0x70000000777A7767)
设:X=70000000777A7767 <------ m
Y=2FD52823261A580196DF9A07CEB9A983654FAB5DD473BC2857780CFCF3D9AC01 <------ d
Z=5D79D4F2EAF92557CEE8EC453254F2CA9B43197BD424BB6C44A30D1366C11BB9 <------ n
用Bigclc“X^Y%Z”计算出C
c=1D033EF29AE89BBB1DD3C955D95D4215FEDDD89B3B41131F94F743B93A40440E
变为:1D033EF2-9AE89BBB-1DD3C955-D95D4215-FEDDD89B-3B41131F-94F743B9-3A40440E
3A40440E-94F743B9-3B41131F-FEDDD89B-D95D4215-1DD3C955-9AE89BBB-1D033EF2
计算:s7=58140D63 xor 9AE89BBB=C2FC96D8
s8=A8737188 xor 1D033EF2=B5704F7A
3A40440E-94F743B9-3B41131F-FEDDD89B-D95D4215-1DD3C955-C2FC96D8-B5704F7A
用户名:wzwgp
注册码:3A40440E-94F743B9-3B41131F-FEDDD89B-D95D4215-1DD3C955-C2FC96D8-B5704F7A
注册信息保存在Settings.ini文件里。
上面都是图文中的分析。。而我不明白的地方是:
<1> 文中 00402FBF |. E8 CC190000 CALL Speed_Vi.00404990 ; RSA运算
CALL这么多,怎么能判断出来这个CALL是作用是RSA运算的?
<2> 00402FE4 |. E8 47710000 CALL Speed_Vi.0040A130 ; 输出RSA运算结果 [A44E60--70]
我跟踪了下,也没有发现RSA的运算结果和 [A44E60--70]有什么关系???那么RSA加密注册码后,结果放到了那里呢?
我不知道我跟踪的对不对,以用户名test,注册码:11111111-22222222-33333333-44444444-55555555-66666666-77777777-88888888来注册,当然这个是假码了。
加密后的结果如下(不知道判断的对不对),
即 ss:[esp+0x18]处放的应该是加密后的结果吧,也就是数据区的:0012CFF4处的32字节的数据:
04 40 91 13 54 5E 50 82 09 57 2D D6 F6 5A 91 66 2D E6 87 1D EA 07 96 CF FE 8D F3 08 A1 49 02 2C
稍后,程序又开始进行倒序处理,倒序后再比较用户名来判断是否成功注册。我跟踪的倒序是这样的:
倒序后:(每四位倒序)
13 91 40 04 82 50 5E 54 D6 2D 57 09 66 91 5A F6 1D 87 E6 2D CF 96 07 EA 08 F3 8D FE 2C 02 49 A1
但是呢?文章中
变为:1D033EF2-9AE89BBB-1DD3C955-D95D4215-FEDDD89B-3B41131F-94F743B9-3A40440E
3A40440E-94F743B9-3B41131F-FEDDD89B-D95D4215-1DD3C955-9AE89BBB-1D033EF2
这里可以看出,它的倒序是整个字符串都倒序过来,而我判断是每四位倒序过来。。。。貌似我的判断是错误的,
因为我在生成注册码时,我用的倒序方法生成的不对,而用作者的这种倒序生成的就对。
貌似说的有些乱,意思就是,怎么判断某个CALL是RSA算法的,怎么判断某个CALL是RSA运算结果的。
还有一个就是RSA的结果放到那里,最后一个问题就是它的倒序具体是怎么倒的,为什么是整体倒序而不是我的每四位倒序?
求高手指点,谢谢。
网上这个程序本身已PJ,请使用用户名test, 注册假码11111111-22222222-33333333-44444444-55555555-66666666-77777777-88888888
来小玩一下。上传地址:http://pan.baidu.com/s/1sllEKrj
|
评分
-
参与人数 2 | HB +2 |
收起
理由
|
禽大师
| + 1 |
|
a2666392
| + 1 |
把钱给我就行了 |
查看全部评分
|