本帖最后由 Gslab 于 2019-5-9 15:21 编辑
《NBA2KOL2》是一款64位的竞技游戏,游戏中的玩家不可以通过面对面进行交易,而玩家之间的财产交流只能通过交易行。所以扫拍功能就成了这款游戏外挂的主要方式。在对交易行的球员进行购买时,我们首先要对球员的价格进行分析,低买高卖才能获取利润。下面我们对其球员的价格列表进行分析。首先选中一个球员并点击购买,这时我们可以看到当前选中球员有一个价格列表,里面显示中球员不同价格的出售数量。为了能够遍历到这个列表,我们需要通过切换不同球员,来改变第一个价格,并同CE进行扫描。最终我们得到了1个结果(如图)
通过xdbg64对这个地址附近的代码进行观察,我们发现,其实这个价格是球员的最低价格,而在其+8 的位置则是这个球员的最高价格,在+10的位置我们可以看到一个2字节的数据,这代表的是当前球员有几种价格。那么从+12开始则是球员的价格数组。 我们在得到的结果出下访问断点,切换球员后我们发现游戏并没有断下,而之前的地址已经被清零,这说明我们访问的地址有可能是一个临时的地址,这就需要我们从新扫描,并通过CE得到这个地址所存放的位置。 在CE中我们对这个地址-4的位置进行扫描可以得到3个结果,这是因为直接扫描这个地址无法得到结果(如图) 对三个结果分析下访问断点,发现第一个地址可以断下,并得到一个+68偏移(如图) 执行到返回后,分析rcx的来源,得到来源于000000014082F5CC处的call nba2kol2.14082CC60内部(如图) 到CALL内部继续分析,进入两层CALL后得到来源于0014041618处的add rdx,[rcx+8] (如图) 当然,在后面的函数中还有一层+0偏移,继续想上分析,可以得到shl rdx, 4,而rcx则来源于01400DD9A处的 mov r8,qword ptr ds:[rcx+8] (如图) 继续向上分析可以得到+60偏移,shl rdx, 4,以及一个基地址(如图) 基地址中存放的是一个普通的数值,并不是地址,而我们需要继续分析rbx的来源,由于继续分析的过程复杂,所以我们通过CE对rbx进行扫描,可以得到一个基地址(如图) 接下来只要将公式整理好就可以对球员价格列表进行读取了。
文章已获原作者——公众号《通化程序员》同意转载,如需转载请联系原作者
*转载请注明来自游戏安全实验室(GSLAB.QQ.COM)
|