专栏首页编程任鸟飞谈逆向-《梦三国》字符串突破口以及跳回游戏领空

任鸟飞谈逆向-《梦三国》字符串突破口以及跳回游戏领空

在逆向很多数据的时候

无论是PC端还是移动端,我们都会借用到字符串去当突破口

今天只是说说PC端的字符串突破口,移动端下个月忙完手里的工作,分享给大家,我们系统来谈

游戏里面的人物名称,物品名称,怪物名称,任务名称,各种描述实际上都可以当成我们逆向数据的突破口,因为他们也是对象下的一个属性。

方案一,找到字符串地址,在附近地址找其他属性,追任意属性的来源即相当于追了字符串,移花接木

我们知道,包括我们自己写结构的时候也一样,有时候对象的属性是字符串的指针,那么我们逆向也一样,如果周围没有其他属性,我们可以选择CE去扫描存放该字符串指针的地址,再去周围看看是否存放的我们想要的其他属性

方案二,直接对字符串下访问断点,追其来源

往往会断到非游戏领空,那么我们就需要去堆栈中寻找一下来源

有的同学,习惯在CE中查看访问该地址的代码,然后拿到这些访问代码,再到OD中去分析,这种方法在找字符串突破口的时候是行不通的

原因?你拿到的所有代码都是字符串的处理代码,到OD中下断就断,那么多的字符串同时访问的代码,下条件断也是会卡死的,那就根本断不到我们想要的字符串了.

正确的方法应该是,扫描到地址以后,在od中dd该地址 然后直接对其下断,断到访问代码,然后在堆栈中找到其来源 继续追踪即可

下图是梦三国追字符串的例子

从堆栈直接返回到第一次出现的位置继续追

而现在上图断的位置是非游戏领空,是所有字符串都会进行访问的

通过堆栈跳回游戏领空,跟追正常数据一样了

在堆栈窗口右键查找,输入我们要追的字符串地址,CTRL+l查找下一个,直到最后一个,也就是第一次出现的位置

本文来自企鹅号 - 任鸟飞逆向媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在 Bash 中抽取子字符串

    所谓“子字符串”就是出现在其它字符串内的字符串。 比如 “3382” 就是 “this is a 3382 test” 的子字符串。 我们有多种方法可以从中把数...

    企鹅号小编
  • 【C语言编程锦囊·连载49】如何进行字符串的比较?

    问题阐述 字符串的比较,就是看两个字符串哪个大,哪个小。比较的原则是对两个字符串进行逐个字符的比较。直到有不相等的字符为止。例: “abcd” “abxa” 这...

    企鹅号小编
  • Java字符串的10大热点问题盘点

    往期精选 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧: 1、如何比较字符串,应该用”==”还...

    企鹅号小编
  • python基础-字符串(6)

    当打来浏览器登录某些网站的时候,需要输入密码,浏览器把密码传送到服务器后,服务器会对密码进行验证,其验证过程是把之前保存的密码与本次传递过去的密码进行对比,如果...

    Se7eN_HOU
  • Python字符串的基本用法总结

        字符串序列用于表示和存储文本,python中字符串是不可变对象。通常由单引号(' ),双引号(" ),三引号(''' """)包围,其中三引号可以由多行...

    py3study
  • python自学第二节课(笔记)

    例如'hello mirror world'、108、''108''分别是:字符串、整数、字符串

    小老鼠
  • 常用函数之字符串时间等

    mysqli_real_escape_string() — 使用反斜线引用字符串 sql注入

    老雷PHP全栈开发
  • 常用函数之字符串时间等

    mysqli_real_escape_string() — 使用反斜线引用字符串 sql注入

    老雷PHP全栈开发
  • PHP字符串操作函数

    这两个函数都是按字节进行字符串比较,其中strcmp()函数区分大小写,strcasecmp()不区分大小写

    白胡杨同学
  • C语言中定义字符串的几种方式

      由于字符串本质上其实就是以'\0作为'结尾的特殊字符数组,所以定义字符串时,必须保证字符串存储的最后一个元素为'\0'。

    诸葛青云

扫码关注云+社区

领取腾讯云代金券