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"命令 (ZC: 默认是用 EAX、ECX)

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

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

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

1、

2、

时间: 2024-08-28 21:25:01

YJX_rxjh_18_3.1.2的相关文章