分享一个宠物过滤的思路
在论坛看到过很多分享经验的,很有用,感谢这些无私的朋友;本来一直潜水的,无聊时偶尔来看一看大家的经验分享打发时间。现分享一下宠物过滤的思路,供大家参考,大师们就不要拍砖啦。(其实这也是根据论坛一些朋友提供的思路找的,对这些东西的研究纯属个人喜好若有不妥的地方就请大师给删了吧!
思路还是栈回溯,OD里面(bp WSASend):
(丝路封包函数大概有8/9层的样子,为了防止跟错,可以直接在7/8层开始跟)
找个空旷无人的地,仍一个物品让猴子捡,OD会断下两次。第一次是扔物品的,第二次是猴子捡物品的。OD第二次断下之后返回到上层调用处。(在调用处下个断点,一扔一捡若只断一次那就是我们要找的那层call啦!)
此封包函数上边的2个call是关键,有一个就是宠物过滤的call啦!
这里就称它们为"fun_item_fiter"和"fun_id2addr"吧,
过滤call"fun_item_fiter"有点复杂,需要慢慢跟,多跟几次大概就明白的,其内部会调用"fun_id2addr",此call的作用就是通过物品ID找基址。只要把此call的调用处的地址hook掉,让其调用自己的过滤函数就ok了。
源码就不给了,提供个思路供大家参考,过滤方法很多,若愿意大家可以共享一下思路。
给一段测试用的内联汇编代码:
__declspec(naked) void MyCosFun3()
{
__asm{
mov eax,//取参数重新压栈call原函数
push eax
mov eax,0x9dfa10//"fun_id2addr"
call eax
add esp,4
test eax,eax //返回对象地址为空
je_end
cmp dword ptr,0x3e
jne jamp //测试,只捡箭矢(类型ID:3E)
_end:
retn ;
jamp:
add esp,8 //带有1个参数,被Hook的call为__cdecl约定
mov ecx,0x8c7321
jmp ecx
}
}
用这个函数替换过滤call中"fun_id2addr"的调用处测试很多次了,暂时还没出错{:1_99:}
inline hook、dll注入方面的知识就不多说啦。
基址是sifu的,和guanfu对不上,附上一段过滤call中的特征码:
008C723B|> /85D2 /TEST EDX,EDX
008C723D|. |8BC3 |MOV EAX,EBX
008C723F|. |8B48 04 |MOV ECX,DWORD PTR DS:
008C7242|. |0F84 32010000 |JE sro_clie.008C737A
008C7248|. |3BD0 |CMP EDX,EAX
008C724A|. |0F85 2A010000 |JNZ sro_clie.008C737A
008C7250|. |3BF9 |CMP EDI,ECX
008C7252|. |0F84 14010000 |JE sro_clie.008C736C
008C7258|. |3B7A 04 |CMP EDI,DWORD PTR DS:
008C725B|. |0F84 06010000 |JE sro_clie.008C7367
008C7261|. |8B6F 10 |MOV EBP,DWORD PTR DS:
008C7264|. |8B45 04 |MOV EAX,DWORD PTR SS:
008C7267|. |A8 06 |TEST AL,6
008C7269|. |0F85 B2000000 |JNZ sro_clie.008C7321
008C726F|. |8A4C24 28 |MOV CL,BYTE PTR SS:
008C7273|. |F6C1 40 |TEST CL,40
008C7276|. |75 08 |JNZ SHORT sro_clie.008C7280
008C7278|. |A8 01 |TEST AL,1
008C727A|. |0F84 A1000000 |JE sro_clie.008C7321
008C7280|> |F6C1 08 |TEST CL,8
008C7283|. |74 08 |JE SHORT sro_clie.008C728D
008C7285|. |A8 20 |TEST AL,20
008C7287|. |0F85 94000000 |JNZ sro_clie.008C7321
008C728D|> |F6C1 10 |TEST CL,10
008C7290|. |74 08 |JE SHORT sro_clie.008C729A
008C7292|. |A8 40 |TEST AL,40
008C7294|. |0F85 87000000 |JNZ sro_clie.008C7321
008C729A|> |F6C1 20 |TEST CL,20
008C729D|. |74 04 |JE SHORT sro_clie.008C72A3
008C729F|. |84C0 |TEST AL,AL
008C72A1|. |78 7E |JS SHORT sro_clie.008C7321 学习一下,感谢分享~~~~~~~~~~~~~~~~~~ 掉我们胃口 唉唉 这算共享吧{:1_102:}{:1_102:} 高手!看不懂 全是汇编{:1_94:} esp太难找了,这个call能找到真是人才,怎么我这到文件头一下断,立刻就断下了,不让扔东西 学习了。这方法不错。{:1_124:}从前自己的弯路走多了虽然同是出于一样的方式HOOK地址不一样处理也不一样。谢了楼主。 lookonstop{:1_164:} 原来 这么厉害哇 xiaomeimei 发表于 2012-10-31 21:55 static/image/common/back.gif
学习了。这方法不错。从前自己的弯路走多了虽然同是出于一样的方式HOOK地址不一样处理也不一样。谢 ...
这方法比较偷懒,不用自己遍历..哈哈.. :D wosch2 发表于 2012-10-31 22:56 static/image/common/back.gif
lookonstop 原来 这么厉害哇
厉害可不敢当,和大师比起来不过是白菜一颗。。{:1_94:} 看不懂楼主还是做个东西出来
页:
[1]