没什么技术含量,纯属无聊练练手。

出来XX有大把的时间,看着哪个不顺眼就削谁,那个后两位是星号的彩虹显IP 2.71外挂是最欠扁的。彩虹开发团队可能出于对用户安全的考量,有意隐藏了对方IP的后两位,将其改为星号。

思路:通过字符串格式化模板,找到回显IP格式化函数,然后修改之。

显IP的原理非常简单,说穿了就是API HOOK,有兴趣上网能搜出一大堆的文章。彩虹安装目录下的“CaiHong.dll”文件就是被Hook QQ函数的新函数的模块,说起来有点拗口,也就是说,API HOOK能改变被HOOK函数的执行流程,比如QQ “QQHelperDll.dll”模块中IsLogin函数的参数包含了当前登录的QQ号码、状态以及上下文句柄,那么我们就可以Hook该函数,其他函数在调用该函数时就会先调用我们自己写的函数(通过查看堆栈,我们就能得我们想要的数据),在我们的函数内部再调用原函数以便程序能正常执行下去。说了这么大一堆话,简而言之就是说,“我们自己的函数”就位于“CaiHong.dll”文件中,该文件就是我们今天要削的对象。API HOOK本身并不复杂,但是要找到正确的被HOOK的函数却是一件十分艰辛的苦差事,在此向前辈们致敬。

打开OllyDbg载入CaiHong.dll,查找字符串“%d.%d.*.*”。运气不错!验证了最初的猜测,而且只有一个地方引用该串。将*号修改成任意字符,重新启动彩虹,探测好友IP,看到对方IP已经被修改成了刚才设置的字符。进一步确认了IP回显的工作方式。然后找到引用该串的位置:

1004BC6E    8B45 08            mov eax,dword ptr ss:[ebp+8]     ; 对方IP
1004BC71    C1E8 10            shr eax,10
1004BC74    25 FF000000      and eax,0FF
1004BC79    50                    push eax                                    ; IP的B位
1004BC7A    8B4D 08            mov ecx,dword ptr ss:[ebp+8]
1004BC7D    C1E9 18            shr ecx,18
1004BC80    51                    push ecx                                     ; IP的A位
1004BC81    68 3CC50810      push CaiHong.1008C53C            ; ASCII "%d.%d.*.*"

该动手修改代码了。首先将"%d.%d.*.*" 改成"%d.%d."%d.%d"。打算将代码放置到该段最后的空隙中,先用一个jmp跳出来,将相应的IP数据入栈后再跳回,详见代码

1004BC71    E9 8AA60300  jmp CaiHong.10086300
1004BC76    90                 nop
1004BC77    90                 nop
1004BC78    90                 nop
1004BC79    90                 nop
1004BC7A    8B4D 08        mov ecx,dword ptr ss:[ebp+8]
1004BC7D    C1E9 18        shr ecx,18
1004BC80    51                 push ecx                                        ;  IP的A段
1004BC81    68 3CC50810 push CaiHong.1008C53C                 ;  ASCII "%d.%d.%d.%d"

10086300    33D2              xor edx,edx
10086302    8AD0              mov dl,al
10086304    52                  push edx                                        ;  IP的D段
10086305    33D2              xor edx,edx
10086307    8AD4              mov dl,ah
10086309    52                  push edx                                        ;  IP的C段
1008630A    C1E8 10         shr eax,10
1008630D    33D2             xor edx,edx
1008630F    8AD0              mov dl,al
10086311    52                  push edx                                        ;  IP的B段
10086312    E9 6359FCFF   jmp CaiHong.1004BC7A                   ;  跳回原函数

修改后的成果:
   

下面是已修改好的CaiHong.dll,下载后直接覆盖彩虹安装目录下的同名文件即可。
http://www.namipan.com/d/CaiHong.rar/a5333ee56c34d982beb7cc8578e904462058a462ce690300

彩虹显IP 后两位星号 解决方案 全显IP相关推荐

  1. 四种保留小数后两位输出方法

    四舍五入:结果虽保留了两位,但四舍五入了 double d = 114.145; d = (double) Math.round(d * 100) / 100; System.out.println( ...

  2. java 取年份后两位_java获取年份的后两位

    public static String getDate(Date strDate) { String date = null; if (strDate!= null) { Calendar star ...

  3. 抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家

    抓交通肇事犯.一辆卡车违反交通规则,撞人后逃跑.现场有三人目击事件,但都没有记住车号,只记下车号的一些特征.甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位不同: 丙是数学家 ...

  4. c语言能保留x后两位并且四舍五入的,二级C语言真题笔记

    1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include main() { short int m=32767, n=032767; printf(& ...

  5. oracle查询年份的后两位,Oracle对2位年份的处理

    欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 虽然Oracle数据存储了4位的年份,但是如果只提供2位数字,Oracle就会根据使用的格式是YY还是RR来解释世纪. ...

  6. java生成随机数保留数点后两位

    1.生成随机数的方法有Math.random和new Random.nextXXX(); double a=Math.random()*10;double b=new Random().nextDou ...

  7. python输出字符串的后两位_Python字符串三种格式化输出

    字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助. 格式化输出:内容按照一定格式要求进行输出. 1.使用占位符%输出 python2.6版本之 ...

  8. 字符串截取后两位,字符串转成数组,再转换位字符串

    4.11号笔记 字符串去掉所有空格,转成数组,再转成字符串 var str = ' 你好! 世界 * * ' var arr = str.replace(/\s/g, "").sp ...

  9. input 限制只能输入数字,且保留小数后两位

    <input @keyup="value=oninput(value)" @change="value=oninput(value)"/> js方法 ...

最新文章

  1. 能让导师喜欢的学生(转自论坛)
  2. Linux中yum源配置及软件安装管理
  3. Server 2012 Hyper-v新功能之一:客户端 Hyper-V
  4. 安装mysql冲突_Linux下安装mysql版本冲突问题解决
  5. unix linux 命令参考,Unix/Linux 命令参考
  6. ASP.NET跨页面传值技巧总结
  7. 设置sqlplus 显示列数和行数
  8. 《我也能做CTO之程序员职业规划》之四:直线定律
  9. Java 关于类型类、this.getClass()的理解
  10. Servlet面试题汇总
  11. 微信机器人接口,微信ipad协议
  12. linux ps3手柄驱动,ps3 DS3 手柄驱动
  13. ecshop+ectouch LANP伪静态
  14. Allegro中Change铜皮至其他层
  15. 小说:凡人修仙路基础
  16. Kroll任命Richard Davies担任网络风险业务副董事总经理,常驻香港
  17. linux使用grep查找文件内容,Linux中使用grep命令搜索文件名及文件内容的方法
  18. 工作了,总少不了饭局的,抄来学习学习
  19. Mybatis的collection和association
  20. JAVA一些实例实战

热门文章

  1. gpio---imx(imx8qxp)
  2. 搭建一个游戏平台运营团队都需要什么?
  3. 解决Chrome浏览器中无法通过代码实现自动播放错误
  4. 优雅的underscore
  5. Bugtags移动开发bug管理系统
  6. 显卡 核心显卡、集成显卡与独立显卡的区别
  7. 小程序Springboot基层慢性病信息管理系统毕业设计-附源码221550
  8. 本科生毕业论文(设计)写作与排版打印规范
  9. AI大潮下的软件工程发展趋势
  10. 人工智能方向开发环境说明