YJX_rxjh_18_3.1.2

喊话功能VC++实现

  (a)、分析喊话CALL的参数基址+偏移

  (b)、VC++代码实现

 

【03:45】先找 ESI的来源

  【04:20】用CE来搜索一下 当前 ESI的值

    【05:08】会直接找到 基址 + 非基址。可以直接用这个基址(ZC: 也不需要验证一下的?),等会再调试一下 看看会不会变

  【06:53】试着用 非基址 找一下 ESI的来源

    【07:03】下一个 内存访问 断点

    【08:30】这个方式的查找就比较复杂了

【09:20】找 第2个参数,就是我们输入的字符串的发送时候的地址

  【09:30】CE搜索 输入的文本的子集

  【09:50】修改一下,再扫描

  【10:15】看到和上节课一样的现象,基址 是用于输入框显示的,非基址 是用于发送网络数据的。测试验证一下(CE修改文本内容,游戏中直接按回车,看角色头顶出现什么内容)

  【10:49】上面找到的非基址,OD中内存写入断点 (ZC: 为何是 写入断点?发送网络数据时 应该是 读取断点 啊... 这里的目的是 找这段内存的起始来源,并不一样非要定位到 发送网络数据,定位到写入数据时 照样可以啊...! !)

  【11:25】上面找到的非基址,OD中内存访问断点 (ZC: -.-)

    【12:26】指令"REPNE SCAS BYTE PTR ES:[EDI]" (ZC: 默认是用 EAX、ECX)

      【16:00】该命令 OD按F7的话,会一次一次的循环执行

    【17:11】此时 EDI值为0x065EF2AB,减7之后 来到0x065EF2A4 指向字符串头部(ZC: 如果EDI指向一个结构体指针的话,怎么感觉这个结构体这么怪啊...)

      【17:20】ZC: 这里 他说的没错,这里是在恢复EDI原来的值(ZC: 严格来说 应该是恢复EDI原来的指向:“LEA EDI DWORD PTR DS:[EAX+13C]”)。【15:58】处 "repne scas"开始前 EDI就是0x065EF2A4 指向字符串开始处,随着每次"repne scas"的执行 EDI的值+1(相当于char*指针依次后移),∵ 指令中明确指定了使用EDI(是否一般该命令也是默认使用EDI?∵字符串操作一般是使用esi/edi)。EDI并非指向结构体指针,而是char*

      【18:10】ZC: 这里在设置 ESI/EDI的值了,是不是在准备 字符串复制之类的操作了?

      【18:42】“REP MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]”

        “REP MOVS BYTE PTR ES:[EDI], BYTE PTR DS:[ESI]”

        【19:00】rep 是一个循环

      【19:08】REP MOVS ==> 执行一个字符串的复制操作

      【19:12】REPNE SCAS ==> 搜索到字符串结尾(为0的地方,两个退出循环的条件: ECX的值为0 或者 查找到了值为EAX的位置)

【22:40】REPNE SCAS 定位EDI指向的字符串 AL里面的值,计数在ECX中(NOT ECX 取反操作)(ECX的计数 是将与AL相等的那个位置一起算在内的)  (ZC: 这里循环停止的条件之一是判断是否和AL的值相等?不是和EAX做比较?貌似是∵ 指令中写的是 BYTE PTR ES:[EDI] 所以是以字节为单位来比较的,如果写成“DWORD PTR ES:[EDI]” 估计在32位os中就是以4字节为单位来比较了)

【24:20】OD指令 dc :以ASCII的形式来显示内存数据

【25:05】OD修改内存数据 :OD 数据窗口 --> 右击 --> Hex --> Hex/ASCII(16位),找半天 没找到在哪里修改内存...

  【25:35】“dd [144F134]+13C” --> OD 数据窗口 --> 右击 --> 修改。【25:48】另一种方式:OD 数据窗口 --> 右击 --> 二进制 --> 编辑

 

【25:58】编程实现

  【32:20】ZC: 这里 喊话CALL的堆栈参数 EDI/EBX 的值,他 并没有去追溯它们的来源 而是根据断下来的时候看到的值 直接传入0x0D。如果是我的话,估计就要死脑筋的去追溯EDI&EBX的来源了,切记 有时切不可死脑筋...

  【32:55】代码写入 VC6,测试一下

  【42:18】ZC: OD数据窗口,看到了 VC中 类的函数表(不知道是不是虚函数表? 还是别的什么函数表?)

  【42:38】代码中改正 ESI的值

  【43:30】游戏中设置 相同内容的喊话 不能连着发送

1、

2、

 

posted @ 2016-05-15 09:58  DebugSkill  阅读(215)  评论(0编辑  收藏  举报