本帖最后由 mm475 于 2014-12-25 15:20 编辑
今天看到论坛里的格盘、雨季,冷丝等等大牛各种玩豪迪,决定也搞一把!好吧!还是硬件断点搞定!硬件断点简单,不用去找别的,就认死理!适合我这等懒人玩玩,而且一个断点走天下,各种尾巴、暗桩全搞定……不过这也是我最后一次发硬件断点教程了,以后我也要改变下思路,要保持思维的跳跃性…… 好了 OD载入 前面的就简单带过,教程很多我就不多说了! 0053E428 |. 803D 144F5700>cmp byte ptr ds:[0x574F14],0x0 byte ptr ds:[0x574F14]必须=1 0053E42F |. 74 10 je Xqqqf.0053E441 je跳了就是未注册版本 0053E431 |. BA ACE45300 mov edx,qqqf.0053E4AC ; 已注册版本 下硬件断点 下好断点,重新载入, 第一次断下老规矩,硬件断点跟随 0053E1FB . /74 09 je Xqqqf.0053E206 0053E1FD . |83F8 0C cmp eax,0xC 比较长度我们不管 0053E200 . |74 04 je Xqqqf.0053E206 0053E202 |33D2 xor edx,edx 在这里bl清零了 0053E204 . |EB 02 jmp Xqqqf.0053E208 0053E206 > \B2 01 mov dl,0x1 注册版bl=1 0053E208 > 8815 144F5700 mov byte ptr ds:[0x574F14],dl 断点位置由bl赋值 0053E20E . 83F8 0C cmp eax,0xC 修改方案: 0053E202 33D2 xor edx,edx 0053E202 B2 01 mov dl,0x1 由于断点位置是在修改之后赋值!所以我们改了代码后要给断点位置也修改成1,这样我们就可以按着注册版的路线继续! 第二次断下是个比较,不用管,只要byte ptr ds:[0x574F14]=1
第三次变0了!
0053DF12 |. 83F8 0C cmp eax,0xC 0053DF15 |. 74 07 je Xqqqf.0053DF1E 0053DF17 C605 144F5700>mov byte ptr ds:[0x574F14],0x0 这里赋值0 0053DF1E |> 803D 144F5700>cmp byte ptr ds:[0x574F14],0x0 修改方案 C605 144F5700>mov byte ptr ds:[0x574F14],0x1 记住要改断点位置的值 好了软件启动了 出现验证失败!查找字符串 0053D6DF |. /75 68 jnz Xqqqf.0053D749 很明显这里是要跳的 0053D6E1 |. |B8 98DA5300 mov eax,qqqf.0053DA98 ; 验证失败! 0053D6E6 |. |E8 91CE0100 call qqqf.0055A57C 有个网络验证什么的不用管他!直接跳过 修改方案: 0053D6DF |.eb 68 jmp qqqf.0053D749 保存重新载入,继续 005622D7 |. 0F9403 sete byte ptr ds:[ebx] 这里会让我们的断点数值变为0 修改方案 005622D7 C603 01 mov byte ptr ds:[ebx],0x1 这可不是自慰,哈哈!!!! 继续!有个暗桩点发送的时候会触发! 用回溯的办法找到
00561208 55 push ebp 00561209 8BEC mov ebp,esp 0056120B |. 51 push ecx 0056120C |. 53 push ebx 00561266 |. 5A pop edx 00561267 |. 59 pop ecx 00561268 |. 59 pop ecx ……………… 0056127F .^ EB F0 jmp Xqqqf_cra.00561271 00561281 . 8BC3 mov eax,ebx 00561283 . 5B pop ebx 00561284 . 59 pop ecx 00561285 . 5D pop ebp 00561286 . C3 retn 这个call就一处调用,而且跳转太多,懒得去分析了直接赋值 Mov al,1 Retn
ok
|