先吐槽一下,悲催的3月11日,该游戏公司,居然停服了我分析了好几个月的游戏,那么多数据就没用了,哼,生气。
不过就当练技术了吧,哈哈。
不过,忍一时越想越气,退一步越想越亏,下载该公司的另一款网游,使劲盘解解气!
10050DD8 - 89 51 20 - mov [ecx+20],edx
10050D16 - C7 41 20 00000000 - mov [ecx+20],00000000
OK,去OD分析第一条,转到地址
10050DD8
,分析后注释如下:
后来我继续追eax的来源,在上层下断后,老是断,无法去游戏里聊天,所以此路不通。
那就不往上追,既然edx是包长,而且edx = [eax+20],那么eax+20这个地址里的包长是哪里来的呢?
好,我们去游戏聊天,发固定长度的话,使包长也等于0x23。断下后,记下eax+20 == 0A5309CC,反复聊天几次发现这个值不变,好的,又祭出CE
监测
0A5309CC,找写入
10050D87 - 89 7E 20 - mov [esi+20],edi
10050DCB - 89 78 20 - mov [eax+20],edi
好嘞,去OD分析
10050D87处的代码(累吧,OD和CE换来换去的用,,,,)
继续追上层
追到这层后,我试着又往上追ebx包长的来源,发现上层也是经常断,那么断了念想吧(同追妹子一样不好追)
纠结了一会,我开始分析上图的倒数第三行:1004FE6E 50 push ecx
对倒数第三行下断,去游戏里聊天,发5个1,使包长等于0x23,然后看看ecx里面的值:
每次聊天断下发现ecx是不变的,只是里面的明文在变,那么我们试着对明文下写入断点(这次居然在OD里下写入断点不奔溃了,哈哈):
断在下图中:
断在这里时,删除内存断点,不要运行,去堆栈窗口找到返回地址,右键跟随到反汇编,返回到了1001E167处
然后我分析这一层的代码,如下:
如注释所说,明文包地址时刻在变,无法分析,只有从包长入手
对上图第一条代码下断,发现每次聊天esi也是不变的,在数据窗口查看esi + 1C4,出出出出大事了,断下时+1C4处有值,运行时没值
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!