|
ppatcher是个内存补丁程序,它的目的是帮你装载入应用程序,并根据给的ppc文件,对特定的内存中的文件修改并运行。 :30:
(会玩Soft-ICE的就知道类似功能)
为什么可以实现呢,我想大家去啃"操作系统"课程就知道了。
这里,以steam.dll(1月7日的3817472字节)为研究目标。
google找到IDA Pro 4.70安装并运行。 :43:
我们学习下这个ppc的内容。
第一部分
Address=0x239735:0x0F:0x90
Address=0x239736:0x84:0x90
Address=0x239737:0x31:0x90
Address=0x239738:0x04:0x90
Address=0x239739:0x00:0x90
Address=0x23973A:0x00:0x90
在IDA窗口,按字母G 输入 20239735 回车。
看到如下:
.text:20239733 test edx, edx
.text:20239735 jz loc_20239B6C
看看上面的代码,有:
.text:202395B5 push offset aLaunching ; "Launching '"
原来是破解,当我们双击游戏快捷图标是出现的“载入”的那段代码。
第二部分
Address=0x23ACBE:0x74:0x90
Address=0x23ACBF:0x3E:0x90
看看IDA窗口,按字母G 输入2023ACBE。
如下:
.text:2023ACBC test edx, edx
.text:2023ACBE jz short loc_2023ACFE
往下翻,看到:
.text:2023AD18 push eax
.text:2023AD19 push offset aCannotPlayWhil ; "Cannot play while purchase pending"
这段破解是针对,“定购”未完成的。
第三部分
Address=0x234FDA:0x75:0xEB
IDA窗口看到是
.text:20234FD0 call sub_2022C1E2
.text:20234FD5 movzx ecx, al
.text:20234FD8 test ecx, ecx
.text:20234FDA jnz short loc_20235037
双击call sub_2022C1E2,我们看到了"Steam is busy, please try again later"。
这段破解是模拟steam系统忙。
第四部分
Address=0x22BF2B:0x55:0x33
Address=0x22BF2C:0x8B:0xC0
Address=0x22BF2D:0xEC:0x40
Address=0x22BF2E:0x83:0xC2
Address=0x22BF2F:0xEC:0x04
Address=0x22BF30:0x30:0x00
在IDA窗口看到:
.text:2022BF2B push ebp
.text:2022BF2C mov ebp, esp
.text:2022BF2E sub esp, 30h
这段代码是也是破解"Steam is busy, please try again later"状态的。
第五部分
Address=0x23ABFA:0x50:0x90
Address=0x23AC01:0xE8:0x90
Address=0x23AC02:0xFE:0x90
Address=0x23AC03:0x17:0x90
Address=0x23AC04:0xFF:0x90
Address=0x23AC05:0xFF:0x90
在IDA看到:
.text:2023ABFA push eax
.text:2023ABFB mov ecx, [ebp+var_210]
.text:2023AC01 call sub_2022C404
前后看看,原来是处理"Cannot play while purchase pending"状态的。
第六部分
Address=0x17DDF7:0x74:0xEB
在IDA看到SteamIsAppSubscribed字符,哈哈这里是游戏ID状态的经典代码,破解后,所有游戏都在“我的游戏”了。
从这些分析,我想大家对ppc应该有个理解了。
这个破解是利用steam的busy状态BUG来达到目的。创造本地的离线offline的合法状态。 :thefinger |
|