📄 a-14-2.htm
字号:
环境设断点 bpx Save_Site_Key , F5, 点击[Validate]按钮,<br> SoftICE下程序停在:<br> CRYP95c!save_site_key<br> 0177:100016FC MOV CL,11<br> 0177:100016FE JMP 1000170E<br> F10单步执行到1000170E,<br> 0177:1000170E PUSH EBP<br> 0177:1000170F MOV EBP,ESP<br> 0177:10001711 PUSH ECX<br> 0177:10001712 SUB ESP,3C<br> 0177:10001715 CALL KERNEL32!SMapLS_IP_EBP_8<br> 0177:1000171A PUSH EAX<br> 0177:1000171B CALL [10001455]<br> 程序运行到这个CALl的时候, 用F8跟进,<br> 0177:10001722 CALL KERNEL32!SUnMapLS_IP_EBP_8<br> 0177:10001727 LEAVE<br> 0177:10001728 RET 0004<br> F8跟进CALL [10001455]之后, 看到下面的代码<br> 0177:1000A104 XOR ECX,ECX<br> 0177:1000A106 MOV CL,[EBP-04]<br> 0177:1000A109 MOV EDX,[ECX*4+802B14FC]<br> 0177:1000A110 MOV EAX,KERNEL32!QT_Thunk<br> 0177:1000A115 JMP EAX<br> QT_Thunk函数是用来调用16位dll的, F10单步执行,执行到JMP EAX,<br> 然后会跟踪进入Kernel32的函数QT_Thunk, 注意不要用F12返回,<br> 否则就跟踪不到crp9516c.dll的代码了, 用F10把QT_Thunk函数单步<br> 运行完.<br> KERNEL32!QT_Thunk<br> 0177:BFF727D9 TEST BYTE PTR FS:[0000001C],01<br> 0177:BFF727E1 JZ BFF728BA<br> 0177:BFF727E7 POP DWORD PTR [EBP-24]<br> 0177:BFF727EA PUSH DWORD PTR [BFFC989C]<br> 0177:BFF727F0 PUSH EDX<br> .....<br> QT_Thunk函数并不长.<br> F10执行完QT_Thunk函数的最后一条RETF后,就进入crp9516c.dll的代<br>码了:<br> 说明一下, 下面这个crp9616c.dll函数正确的返回值应该是AX=0, 因<br>此如果<br> 程序执行到某个地方AX的值为FFFF,FFFE或者FFFD什么的, 就准备返回<br>,<br> 肯定是错误出口.<br> 如果修改它这些地方的跳转, 让程序按照正常的流程执行一遍,<br>SaveSiteKey<br> 就会成功,也就注册成功了. 至于会注册成功一个什么类型的License,<br>我不知道,<br> 因为没有仔细分析它各个数据的含义, 调试时遇到过多次Unlimited<br>License.<br> 下面是相应的汇编代码, 在SoftICE下得到的, 其中标注了几处,只为<br>简单说明<br> 这个方法的意图,也许有疏漏的地方.<br> 49AF:0CF4 B84F51 MOV AX,514F<br> 49AF:0CF7 45 INC BP<br> 49AF:0CF8 55 PUSH BP<br> 49AF:0CF9 8BEC MOV BP,SP<br> 49AF:0CFB 1E PUSH DS<br> 49AF:0CFC 8ED8 MOV DS,AX<br> 49AF:0CFE 81ECDE01 SUB SP,01DE<br> 49AF:0D02 9A9AA1AF49 CALL 49AF:A19A<br> :u<br> 49AF:0D07 8986A6FE MOV [BP+FEA6],AX<br> 49AF:0D0B 0BC0 OR AX,AX<br> 49AF:0D0D 7503 JNZ 0D12<br> 49AF:0D0F E99403 JMP 10A6<br> 49AF:0D12 8B86A6FE MOV AX,[BP+FEA6]<br> 49AF:0D16 8ED8 MOV DS,AX<br> 49AF:0D18 B8F102 MOV AX,02F1<br> 49AF:0D1B 1E PUSH DS<br> :u<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -