冥界3大法王 发表于 2017-1-17 10:01

破解交流mov eax, 0000270F是不是这么推算来的?

本帖最后由 冥界3大法王 于 2017-1-17 10:09 编辑

http://www.52pojie.cn/thread-574064-1-1.html
看了一下 初亦泽 老兄的大作:
它修改的是这里:
00570B4C      55            PUSH    EBP                                  修改为:mov eax, 0000270F如果改成mov eax,1当然也成立只是无限授权字样被打乱而已
00570B4D      8BEC          MOV   EBP,ESP                        ret
00570B4F      83C4 D8       ADD   ESP,-0x28
00570B52|.53            PUSH    EBX
我们关心的是270F是如何来的?


00571708   .E8 3FF4FFFF   CALL    winchm.00570B4C                  ;进去的地址是那个00570B4C(同时这句也是注册表之后,读取到注册名的地方)
0057170D   .8BD8          MOV   EBX,EAX
0057170F   .8BC3          MOV   EAX,EBX
00571711   .83E8 01       SUB   EAX,0x1                                  ;Switch (cases 0..270F) <==大家注意左边的这行英文 开关点270F
00571714   .72 0B         JB      SHORT winchm.00571721
00571716   .74 17         JE      SHORT winchm.0057172F
00571718   .2D 0E270000   SUB   EAX,0x270E                     ;看这里!显然这句很重要!我琢磨跟这句有直接关系!
0057171D   .74 21         JE      SHORT winchm.00571740
0057171F   .EB 30         JMP   SHORT winchm.00571751
00571721   >A1 0C365E00   MOV   EAX,DWORD PTR DS:      ;Case 0 of switch 00571711
00571726   .33D2          XOR   EDX,EDX
00571728   .E8 8F56E9FF   CALL    winchm.00406DBC
0057172D   .EB 3E         JMP   SHORT winchm.0057176D
0057172F   >A1 0C365E00   MOV   EAX,DWORD PTR DS:      ;Case 1 of switch 00571711
00571734   .BA 04185700   MOV   EDX,winchm.00571804            ;UNICODE "Single-user License"
00571739   .E8 7E56E9FF   CALL    winchm.00406DBC
0057173E   .EB 2D         JMP   SHORT winchm.0057176D
00571740   >A1 0C365E00   MOV   EAX,DWORD PTR DS:      ;Case 270F of switch 00571711
00571745   .BA 38185700   MOV   EDX,winchm.00571838            ;UNICODE "Unlimited-user License"
0057174A   .E8 6D56E9FF   CALL    winchm.00406DBC
0057174F   .EB 1C         JMP   SHORT winchm.0057176D
00571751   >8D55 E8       LEA   EDX,DWORD PTR SS:      ;Default case of switch 00571711

0x270F的常量只有几个


004171AA|.66:817D FE 0F>CMP   WORD PTR SS:,0x270F 显然这句好像也有些关系,因为与启动弹注册有关!

最后我们掌声有请 @初亦泽   同学来说说这个作业是如何得出结论的?
个人觉得他得修改方法很巧妙!应该有掌声{:301_974:}

修改之后得以实现跳向 无限授权~~

初亦泽 发表于 2017-1-17 10:57

汇编语言的一个加减法而已

00571708   .E8 3FF4FFFF   CALL    winchm.00570B4C                  ;通过这个CALL给寄存器EAX返回一个值
0057170D   .8BD8          MOV   EBX,EAX
0057170F   .8BC3          MOV   EAX,EBX
00571711   .83E8 01       SUB   EAX,0x1                        ;这句的意思是把EAX里面存放的数值减一,再存入EAX,同时SUB指令也会影响标志寄存器ZF
00571714   .72 0B         JB      SHORT winchm.00571721
00571716   .74 17         JE      SHORT winchm.0057172F
00571718   .2D 0E270000   SUB   EAX,0x270E             ;EAX数值减0x270E,
0057171D   .74 21         JE      SHORT winchm.00571740   ;可以看到这个跳到旗舰版的授权字样,所以关键就是让这个JE成立,那么上面SUB指令运行后EAX值应该为零,所以在最上面CALL返回的EAX值应该是 0x0+0x270E+0x1 =0x270F
0057171F   .EB 30         JMP   SHORT winchm.00571751
00571721   >A1 0C365E00   MOV   EAX,DWORD PTR DS:      ;Case 0 of switch 00571711
00571726   .33D2          XOR   EDX,EDX
00571728   .E8 8F56E9FF   CALL    winchm.00406DBC
0057172D   .EB 3E         JMP   SHORT winchm.0057176D
0057172F   >A1 0C365E00   MOV   EAX,DWORD PTR DS:      ;Case 1 of switch 00571711
00571734   .BA 04185700   MOV   EDX,winchm.00571804            ;UNICODE "Single-user License"
00571739   .E8 7E56E9FF   CALL    winchm.00406DBC
0057173E   .EB 2D         JMP   SHORT winchm.0057176D
00571740   >A1 0C365E00   MOV   EAX,DWORD PTR DS:      ;Case 270F of switch 00571711
00571745   .BA 38185700   MOV   EDX,winchm.00571838            ;UNICODE "Unlimited-user License"
0057174A   .E8 6D56E9FF   CALL    winchm.00406DBC
0057174F   .EB 1C         JMP   SHORT winchm.0057176D
00571751   >8D55 E8       LEA   EDX,DWORD PTR SS:      ;Default case of switch 00571711

一生挚爱 发表于 2017-1-17 10:35

大牛,膜拜

Anewbie 发表于 2017-1-17 10:52

各位老师都说过一句话:不会汇编语言的都成不了大牛。   我就是活生生的例子啊

Gnod 发表于 2017-1-17 11:09

{:301_1009:}又是汇编,lz能推荐个汇编教程不

blueocean2016 发表于 2017-1-17 13:19

新手学习,葱白

whyida 发表于 2017-1-17 19:28

本帖最后由 whyida 于 2017-1-17 19:31 编辑

关键 00571711   .83E8 01       SUB   EAX,0x1                                  ;Switch (cases 0..270F) <==大家注意左边的这行英文 开关点270F
非常明显的Switch 语句, mov eax,0x270F当eax的值为0x270F 则跳向成功。
以上只是根据所贴出代码的判断。
页: [1]
查看完整版本: 破解交流mov eax, 0000270F是不是这么推算来的?