|
且行且远
虽然感觉起来不是很难,但是倒是颇花了我一番工夫啊,就是到最后我都不知道在主窗口显示完整IP的关键跳在哪里,只好直接改了取IP的偏移值,而且竟然好用,看来还是有点运气的成分的。 说说思路吧,首先分析IP可能是从服务器端传过来是完整的,然后到客户端再判断用户的等级,然后手动把IP后两位用.*.*来代替。当然也有可能是发送自己的等级到服务器,然后再由服务器直接返回已经隐藏IP的字符串,这种就比较麻烦了,需要伪造发送数据包。庆幸的是,Maze目前采用的方法是前者。 首先找到ASCII字符串参考.*.*,全都设上断点,OD载入启动后,单击Maze邻居,这时被断下,顺着堆栈返回上层调用,往上翻,可以看到这里: 004A28C3 . 83F8 09 cmp eax, 9 没有仔细分析,估计这里可能是对等级的一个判断,那么把这条指令改成jmp强制跳转即可,这样就可以跳过隐藏IP后两位的程序段了,再启动程序,发现在左侧Maze邻居里面,IP已经显示的是完整的了。用同样的方法可以把独立站点、优秀站点等全都改成显示完整IP。 但是这还没有完,当打开一个用户的时候,显示在主窗口的IP仍然是隐藏了后两位的,遗憾的是我一直都没有找到这部分的关键跳,用了另外一种方法解决的。仍然是用刚才的断点,双击任意一个用户打开,被断下,Ctrl+F9返回,慢慢F8向下跟,可以来到这里: 004D436F . 83F8 FF cmp eax, -1 注意4D4374这句,从[esp+30]中取得已经隐藏后两位的IP地址,观察堆栈,发现在堆栈中还完整保存着完整的IP,地址是[esp+74],于是,把这条指令改成mov eax, [esp+74],保存,重启客户端,发现这样就可以在右侧主窗口上面也显示完整的IP了。 呵呵,还是挺简单的吧,不过还是花了我好长时间呢,之后又用NsPack压缩了一下,贴在这里吧。 下载之后覆盖原Maze文件即可,注意Maze版本是7.05正式版 6月16日 发表评论
|
|
||