彩虹显IP 后两位星号 解决方案 全显IP
没什么技术含量,纯属无聊练练手。
出来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相关推荐
- 四种保留小数后两位输出方法
四舍五入:结果虽保留了两位,但四舍五入了 double d = 114.145; d = (double) Math.round(d * 100) / 100; System.out.println( ...
- java 取年份后两位_java获取年份的后两位
public static String getDate(Date strDate) { String date = null; if (strDate!= null) { Calendar star ...
- 抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙是数学家
抓交通肇事犯.一辆卡车违反交通规则,撞人后逃跑.现场有三人目击事件,但都没有记住车号,只记下车号的一些特征.甲说:牌照的前两位数字是相同的:乙说:牌照的后两位数字是相同的,但与前两位不同: 丙是数学家 ...
- c语言能保留x后两位并且四舍五入的,二级C语言真题笔记
1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include main() { short int m=32767, n=032767; printf(& ...
- oracle查询年份的后两位,Oracle对2位年份的处理
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 虽然Oracle数据存储了4位的年份,但是如果只提供2位数字,Oracle就会根据使用的格式是YY还是RR来解释世纪. ...
- java生成随机数保留数点后两位
1.生成随机数的方法有Math.random和new Random.nextXXX(); double a=Math.random()*10;double b=new Random().nextDou ...
- python输出字符串的后两位_Python字符串三种格式化输出
字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助. 格式化输出:内容按照一定格式要求进行输出. 1.使用占位符%输出 python2.6版本之 ...
- 字符串截取后两位,字符串转成数组,再转换位字符串
4.11号笔记 字符串去掉所有空格,转成数组,再转成字符串 var str = ' 你好! 世界 * * ' var arr = str.replace(/\s/g, "").sp ...
- input 限制只能输入数字,且保留小数后两位
<input @keyup="value=oninput(value)" @change="value=oninput(value)"/> js方法 ...
最新文章
- 能让导师喜欢的学生(转自论坛)
- Linux中yum源配置及软件安装管理
- Server 2012 Hyper-v新功能之一:客户端 Hyper-V
- 安装mysql冲突_Linux下安装mysql版本冲突问题解决
- unix linux 命令参考,Unix/Linux 命令参考
- ASP.NET跨页面传值技巧总结
- 设置sqlplus 显示列数和行数
- 《我也能做CTO之程序员职业规划》之四:直线定律
- Java 关于类型类、this.getClass()的理解
- Servlet面试题汇总
- 微信机器人接口,微信ipad协议
- linux ps3手柄驱动,ps3 DS3 手柄驱动
- ecshop+ectouch LANP伪静态
- Allegro中Change铜皮至其他层
- 小说:凡人修仙路基础
- Kroll任命Richard Davies担任网络风险业务副董事总经理,常驻香港
- linux使用grep查找文件内容,Linux中使用grep命令搜索文件名及文件内容的方法
- 工作了,总少不了饭局的,抄来学习学习
- Mybatis的collection和association
- JAVA一些实例实战