wking's blog

  • 文章分类
    • 日常随笔
    • IT技术
    • 系统封装
    • 大航海时代
  • 关于博主
GOD'S IN HIS HEAVEN, ALL'S RIGHT WITH THE WORLD.
  1. 首页
  2. IT技术
  3. 正文

[原创]大航海ol 读取聊天框内容及分析

2012-03-18 2273点热度 2人点赞 3条评论

参考文章:结合CE,OD找数据结构http://hi.baidu.com/glfbin/blog/item/ba38e9f58d8c6821bc3109ed.html

进入正题:

游戏版本:5007

大体思路:游戏里先说一句话,然后用CE查找到某一内存地址。找到后用OD下内存断点。就找到了操作内存的语句。仔细研究后能得到下面的东西:

LOG首地址基址:CBBB64
LOG内容基址:CBBCE0

LOG首地址基址是一个指针。读取LOG首地址CBBB64内存数据,我这里读出来的是07322E5C。然后看看内存地址07322E5C是什么东西。

07322E5C 80 2E 32 07 00 00 00 00 00 00 00 00 00 00 00 00
07322E6C 00 00 00 00 14 00 00 00 00 00 00 00 0E 00 00 00
07322E7C 7F 01 00 00

每4字节为一组,含义分别是:
后一个LOG地址,前一个LOG地址,未知,偏移,未知,长度,未知,信息类型,未知。

比如后一个LOG地址是80 2E 32 07(内存是反着储存的,正确的是07322E80)。

结构分析完了,最后是读取对应的文字内容。

公式是:
文字内容=LOG内容基址+结构体里的偏移*2
文字长度=结构体里的长度*2

最后有一个前辈写的读LOG脚本,我已更新到最新版。

wkings.net-提取对话_台服

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2022-11-01

wking

不管博客型博主

点赞
< 上一篇
下一篇 >

文章评论

  • 尼森

    收益颇多,想学习下这段代码,不知道能否告知最新的内存地址?我逆向推理学习下,谢谢!

    2012-07-07
    回复
    • king

      @尼森 最新地址我也没有研究。但是可以根据LOG行数推算出来。具体参考http://hi.baidu.com/wking/item/f888a917cdc719721109b5f8

      2012-07-14
      回复
  • yh0008881

    logohead_addr = &h00cea1fc
    logotail_addr = &h00cea200
    logosum_addr = &h00cea380
    logoinfo_addr = &h00cea378
    Sub 读最后一句话(i,zfs)
    logobase=Plugin.LazyGod.ReadMemory(objwin(i),logoinfo_addr, 2)
    logoaddr=Plugin.LazyGod.ReadMemory(objwin(i),logotail_addr, 2)
    logoaddroff=logoaddr+12
    offset=Plugin.LazyGod.ReadMemory(objwin(i),logoaddroff, 2)
    temp0 = logobase + offset*2
    logolast=Plugin.LazyGod.ReadMemory(objwin(i),temp0, 6,zfs)
    End Sub

    zfs 是调用程序带来的字符数长度,汉字读取必须是偶数啊

    2012-11-10
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    标签聚合
    大航海时代 wordpress 一支红杏 C++ win10 linux R6300V2 OneNote

    COPYRIGHT © 2024 wkings.blog. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang