-
-
[原创]正反合璧,挖掘war3资源地址详细过程
-
发表于:
2017-3-14 06:38
9592
-
这个话题原来我只能求助了,百度搜索等等。发现了很多有兴趣的同学也在搜索,无奈却找不到……。有找到的大侠却又惜字如金,不肯吐露分毫。嘿嘿,本着共享知识,共同进步的原则,我将研究的成果共享给大家吧!
我用CE查找war3 1.27的金币的时候,也是想着按照CE教程里的原理直接查找。首先按精确值查找,开局都是500金币,然后采10点金币,再Next Scan,结果……没有结果了!
看来这里的数值不一定就是画面显示的数值。突然想到以前查生化危机时,它的血值是显示的10倍!这么看来魔兽也很有可能搞点小动作!于是按未知初始值方式,每采一次金币,就按增加值的方式搜索,终于把它定格下来了。居然真的是10*显示的金币值。(这中间探索的过程就不贴图了,若知道它是10倍关系,直接按精确值搜索立即就出来了!嘿嘿)CE里面搜索出来的动态地址如下:
然后,再按照基础教程方式(find out what writes to this address)可以找到一级指针!
再继续,搜索一级指针。这里会搜索出一堆指针地址:
按照一般的思路,肯定是选择简单的进行搜索了!嘿嘿,我也是这么想的!那么就完蛋了!按照 mov eax, [ecx+40]的地址进行搜索也是很多同学不知道怎么会陷入到无尽循环之中的原因了。按照这种步骤进行常规搜索,在搜索出一堆地址之后,又会出现指向前面一模一样的指针……子又生孙,孙又生子,找不到尽头了!
我开始也被困在此处了,后来想到上面的那个特殊指针地址。既然此路不通,只能看看那个特殊地址了!但是这个ecx的值不确定啊!!!怎么办?
用CE中的”小OD“打开这个地址,向上一扫描,发现好多这样的[eax+ecx*8+04]:
没办法了,CE中的小OD的调试功能确实没有大OD强,用大OD来帮忙吧,哈哈。关掉CE,用OD附加到war3进程,
然后CTRL+G到达这处令人郁闷的地址。
发现这个位置应该是在一个函数体内。先看看周围环境吧,上下瞧瞧。结果在上面入口处看到了好东西:
难道这就是传说中的基址?哈哈。然后向下再看看与此硬编码相关的操作:
看到没有?这样就正向推导出来了指针的计算方法了(CE的查找方式是反向推导,从数据入手), 这里直接是从硬编码的基地址入手。得出结论:
金币的基址为5D340A8,那么它指向的地址为 [[5DE340A8]+0C]+8*ECX+4]+78。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)