CE新手指南
CE 是汇编级调试程序(游戏外挂)的神器,在刚开始使用的时候会遇到一个基础的新手指南,在此做部分记录。
教学篇
步骤2
略,密码090453
步骤3
略,密码419482
步骤4
注意精度,密码890124
步骤5
建议替换用nop滑板而不是00,其他略。密码888899
步骤6
锁定,指把激活打叉。密码098712
步骤7
跟着提示走就好,不过建议最好在这里多试试不同的注入方案。密码013370
步骤8
重头戏前戏来了。(密码525927)
多级指针一直搞不懂怎么办!来做这个题就懂了!
题目要求四级指针,大概流程还是搜索变化值,找到引发的指针,并将其递归这个过程,最后找到静态地址为止。
下面来认识一下界面。

这是最后的地址界面,可填入项为16进制,箭头后从下到上分别是第四三二一零级指针内的地址(也均为16进制),左上角则为最终指向的值。箭头前则意味着对指针取偏移,由于指针等效于数组名,如图,整个过程约等于p[0][4][6][0][6]
。(从左到右对应从下到上依次除去字节长度)。具体过程如下:
- 精准搜索出待求数值p,并确认其地址;
- 点击“手动添加地址”,如指向对象(待求数值p)为指针,则勾选下方“指针”,否则直接填入;将该指针填入后长框在上方短框中添加之前所得的偏移,即得到上个指针;继续添加偏移,溯源,直到右上角为改变了的数值;若添加的这个地址为静态(绿色的),则终止,得到的最后一个指针即为全指针链;
- 在对应条目上右键,选择“找出是什么访问了该地址”,然后在原程序中“改变数值”,观察这个改变是由哪个指针的多少位移得出的(这里需要注意一下mov是从后向前mov,cmp则并不是我们关心的指令)。例如,我的程序这个值当前对应的是地址0x1568428,但在访问时访问的是[rdi+0x18],也就是实际指针指向的其实是rdi这个地址,于是我们拿当前地址减去偏移得到0x12568410,这就是我们下一个待求的数值;
- 回到第一步。
步骤9
重头戏(密码31337157)
这一节主要讲解了如何处理结构体和共用代码。我的处理是这样的:
1.首先查出减血的操作,这里右键选“改写地址”,找到写入操作和要写入的偏移量;
2.找出四个血量对应的地址,然后按照敌我分组,使用内存浏览器(前边关卡有用到)的工具,选择分析数据,把四个地址(注意减去偏移量)添加进不同群组进行比较,之后点击“结构”,并定义新的结构,即可实现对比。(补充,“视图”的设置可以查看不同的颜色对应的含义)。
3.找出特性(这里是队伍编号)。设计注入代码,套用模板,我设计的是
1 | cmp [rdx+18],1 |
解决问题。
实战篇
这个就是自由发挥了,我直接用的最简单的方式实现,希望能有更多不同思路。
l1
搜索所有类型,先去掉时刻在变的数值,再按照攻击后靶子数值的变化选择对应的模式,最后筛出来两个值,分别改成1试试,就过了。
l2
这个题本来觉得只锁血应该还可以,但后来发现一个死掉之后另一个会直接秒杀,而队友伤害也算伤害,所以锁了血之后跑到他俩一侧,让他俩分别给队友背锅到最后一丝血,然后少量子弹在对方发大招之前就可以解决。
l3
这个题我就找到了x坐标,然后通过调节时间速度增加跳跃高度手工通关。其实也找到了障碍物的坐标并锁定,但奈何最后有那么一步(不剧透了),所以老老实实回来找x解决问题hhhh