首页
社区
课程
招聘
[求助]寻找OD 下send 断点时特定的send函数
发表于: 2013-8-4 23:41 22443

[求助]寻找OD 下send 断点时特定的send函数

2013-8-4 23:41
22443
各路大神,小弟工作之余学习逆向知识,拿了个某P的游戏做测试,新手上路想先找个走路call 试试,发现问题很多,小弟先尝试了 bp send 方法,但每次F9运行时,它都会断下来,根本无法运行起来再断,小弟想请教下怎么才能在走路时断下 send call,或者说一般用什么方法找到特定方法的send。感激感激。。。如果大神愿意,希望指点指点小弟怎么找某P的走路call,感激啊,下班了还学习这个真累。。。

小弟下bp send 断点时在反汇编跟随时复制的代码如下:
0D1845CC    52              PUSH EDX
0D1845CD    50              PUSH EAX
0D1845CE    57              PUSH EDI
0D1845CF    FF15 3CDF260D   CALL DWORD PTR DS:[<&WS2_32.#19>]      ; ws2_32.send

0D1845D5    85C0            TEST EAX,EAX

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 248
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
求怎么过某P
2013-8-5 00:33
0
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
游戏不都有坐标。慢慢跟
2013-8-5 02:52
0
雪    币: 27
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
工作之余学习逆向知识?特意干掉某P然后来学习逆向?
  我和我的小宝宝都说: 楼主在做挂,理由好牵强....
2013-8-5 03:40
0
雪    币: 10354
活跃值: (5243)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
确定包大小后 在edx处 下条件断点 edx==包大小
2013-8-5 07:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼上的可行,但是如果很多包,比如所说话的包和走路的包一样大呢(尤其是某些加密过的包,大小可能都一样)?那么就起不到过滤的作用了。。。其实还有个可行的办法,先不要下断点,等人物进入游戏之后。下SEND断点,之后人物走一步看看。。这个时候的断SEND应该就是走路的SEND了。要注意的是网络游戏人物完全静态的时候并非不像数据库发包了,有些游戏还是会向服务器发包(类似于判断人物是否断线的包)。但是这种包频率不会太高。所以要反复取消,设定断点,多断几次看下SEND里面的内容,排除后者。
2013-8-5 08:07
0
雪    币: 81
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
走路call 一般是多个内部CALL组成,  对坐标下断点 很容易找到 BP SEND 不好找
2013-8-5 13:22
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
苦逼的才下班。。。大哥你和你的小宝宝太聪明了。。。只是目前还是摸索阶段,离做挂的水平还远啊
2013-8-5 21:03
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
大神,问题就是进入游戏后,下send断点,游戏就老是断下来,走路都来不及走。。。大神分享些send断点的经验,好让小弟少走点弯路
2013-8-5 21:06
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
对坐标下断点这段时间尝试过,找了一段代码注入了不行。。。。。
006915F0    55              PUSH EBP                                 ; ebp = 0012F6C4
006915F1    8BEC            MOV EBP,ESP                              ; esp = 0012F6A4
006915F3    83EC 18         SUB ESP,18                               ; esp = 0012F68C
006915F6    53              PUSH EBX
006915F7    56              PUSH ESI
006915F8    8BF1            MOV ESI,ECX                              ; ecx = 25D357A0
006915FA    8B06            MOV EAX,DWORD PTR DS:[ESI]
006915FC    8B50 2C         MOV EDX,DWORD PTR DS:[EAX+2C]
006915FF    57              PUSH EDI                                 ; edi = 0
00691600    FFD2            CALL EDX                                 ; edx = xclient.00690620
00691602    84C0            TEST AL,AL                               ; ax != 0
00691604    75 0E           JNZ SHORT XClient.00691614
00691606    B8 01000000     MOV EAX,1
0069160B    5F              POP EDI
0069160C    5E              POP ESI
0069160D    5B              POP EBX
0069160E    8BE5            MOV ESP,EBP
00691610    5D              POP EBP
00691611    C2 0800         RETN 8
00691614    8B7D 08         MOV EDI,DWORD PTR SS:[EBP+8]             ; ebp = 0012F6A4, then edi = 13F65FB8
00691617    8B47 04         MOV EAX,DWORD PTR DS:[EDI+4]             ; eax = xclient.010FE100
0069161A    8B48 04         MOV ECX,DWORD PTR DS:[EAX+4]             ; ecx = 000003D8
0069161D    8B5E 20         MOV EBX,DWORD PTR DS:[ESI+20]            ; esi = 27052A48, ebx = 43E04000 c
00691620    8B5439 04       MOV EDX,DWORD PTR DS:[ECX+EDI+4]         ; edx = 010FDE0C
00691624    83EC 0C         SUB ESP,0C
00691627    8BC4            MOV EAX,ESP
00691629    8918            MOV DWORD PTR DS:[EAX],EBX               ; push x   第三个入栈
0069162B    8B5E 24         MOV EBX,DWORD PTR DS:[ESI+24]
0069162E    8958 04         MOV DWORD PTR DS:[EAX+4],EBX             ; push y   第二个入栈
00691631    8B5E 28         MOV EBX,DWORD PTR DS:[ESI+28]
00691634    8D4C39 04       LEA ECX,DWORD PTR DS:[ECX+EDI+4]
00691638    8958 08         MOV DWORD PTR DS:[EAX+8],EBX             ; push z    第一个入栈
0069163B    8B82 20010000   MOV EAX,DWORD PTR DS:[EDX+120]
00691641    FFD0            CALL EAX                                 ; eax = 006A6ED0
00691643    85C0            TEST EAX,EAX                             ; eax = 1
2013-8-5 21:11
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
  send停不下来,一直断。。。走路都走不了,怎么确定额
2013-8-5 21:12
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
兄弟。。看雪这方面的文章太多了,源码都有。。。
2013-8-5 21:13
0
雪    币: 10354
活跃值: (5243)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
wpe附加 截包
2013-8-6 08:43
0
雪    币: 110
活跃值: (527)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
14
无敌了。。bp send?,游戏一直在发送包,不光走路,,要判断人物是否在线,任务情况,技能CD等等。都要发包的,你bp send能找到走路call?那不异于大海捞针??
2013-8-6 08:54
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
要多使用字符串方法啊, 譬如
走路(你就跟踪坐标变化),吃药(你就跟踪药品数量变化),打怪(你就跟踪走路或者选怪,因为打怪,首先会选怪,另外距离远肯定会先走过去),多观察那种界面上明确变化的数据,比直接跟send然后回溯要好。 另外拿ida看看字符串,经常会有很多有用的字符串的,对于大致定位函数有帮助。
除了字符串,现在常流行的lua也要学习,这玩意我不懂,不过论坛都有这方面的资料啊,插件啊,send感觉已经非常原始了。
2013-8-6 09:39
0
雪    币: 100
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
第一种如果没有任何操作,能断下来来的都是心跳包 ,都有时间间隔,如果第一次断下来,立马运行,趁着时间间隔,赶紧操作,那么这次段下来的应该就是
第二种又或是看看心跳包的数据长度是多少,使用条件断点(!=)进行下断点,过滤心跳包,然后进行操作,能断下来的就是
2013-8-6 10:12
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
不是有很多人用这样的方法找call嘛,所以我试了才发现不停的断,难度太大。。。。
2013-8-7 00:56
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
感谢大哥那么热情指点啊,小弟可以少在黑暗中摸索好几年嘿嘿。。。。用od下断跟踪走路、吃药这些call也能要字符串?我只看了数据。。。。。用ida看字符串,是指用ida反汇编游戏客户端吗,这信息量好大啊。。。。
2013-8-7 01:03
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
断字符串的意思,就是说断这些数据,走路那你就给坐标下写入断点,因为走路函数里肯定会修改当前坐标的,这样你就能断到走路函数里了嘛。
原理就是走路,吃药除了会send发包以外,他们还会去修改数据,譬如坐标,药品数量,血量,给这些数据下写入断点.例如打怪,你还可以给经验值下写入断点,忘掉send吧。
zoulu()
{
  xxx()
  {
    send()
}
  yyy()
{
   change_zuobiao()
}
}

用ida看字符串,就是指ida反汇编游戏客户端,有壳的先脱壳,会有很多有用的字符串的, 多练习,熟练就好了。
2013-8-7 09:41
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
哈哈,留给联系方式一起交流嘛。send确实不太好用,有些游戏即使send断住,也是线程循环发包,跳不回游戏内部。 一直断住,是不是心跳包?把心跳包过滤掉看看
2013-8-7 11:20
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
感谢兄弟分享经验!~~听你的 建议,尝试用IDA反汇编客户端,发现有壳,找到的字符串也没啥用。。。晕倒!ASPack 2.12 -> Alexey Solodovnikov [Overlay]  ,TX的壳估计不会很简单。难道还重新学脱壳!晕倒!找个走路call就那么麻烦么。。。。自信心严重受打击。。。用OD分析出来的call还走不了。。。不知怎么搞了,重新学脱壳又得花一段时间。。。。
2013-8-10 00:06
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
ok啦~~五零六八零一二三七。。。。。
2013-8-10 00:08
0
雪    币: 53
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23

我有个想法..可能会比较好找,
CE找到坐标内存位置,根据内存找到调用或压入位置,你想要的可能就在附近,上线摸着跟吧..
2013-8-10 01:18
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
[QUOTE=jayfree;1208240]感谢兄弟分享经验!~~听你的 建议,尝试用IDA反汇编客户端,发现有壳,找到的字符串也没啥用。。。晕倒!ASPack 2.12 -> Alexey Solodovnikov [Overlay]  ,TX的壳估计不会很简单。难道还重新学脱壳!晕倒!找个走路call就那么麻烦么。。。。自信心严重受...[/QUOTE]

只是拿ida去看而已,不一定要脱壳后的程序能运行,所以拿OD运行起来后,你直接给它dump出来的文件都够了,相比壳而言,驱动保护才是难点 熟能生巧,call找多了就自然积累了经验。
2013-8-10 09:35
0
游客
登录 | 注册 方可回帖
返回
//