码龄10年 暂无认证

34107
访问
1
等级

8
获赞
3
评论

最新评论

  • 20240228阿⑤

    积分乍获得

  • 20231124ziher

    666

  • 20230909八月老师

    什麼時候發佈易語言支持庫呢

一.《轩辕传奇》周围遍历之二叉树

Heart 2023-05-19 22:38:41 发布 1384

分类专栏: 专题数据 文章标签: 周围遍历 二叉树 数据分析

周围遍历之二叉树

总结:

1.我们通过名字找周围遍历的话,需要找到通过改变目标能更新到怪物上的那个地址,这里千万不要搞错了,因为很有可能找到的是UI方面的.

2.当我们下断文字的时候,既然是因为改变目标找到的地址,那么我们还是通过选择目标来断下,才很可能是我们想要的遍历.

3.这里通过选择目标断下来,也会有多处断,这里就要一个个分析找了.

4.对于上面的,我们就找到2次坑,最后才遇到了真正的遍历二叉树.

5.突破口很重要.

改变怪物头像上的名字(Unicode)找

1.发现是不对的 找到了个奇怪的偏移 虽然能找到 但是这个很诡异

2.很可能是UI上的

26617149275.png

0095B327 > 64:A3 00000000 > mov dword ptr fs:[0],eax >
0095B32D > 8BF1 > mov esi,ecx > edi 观察堆栈 来至于第一个参数
0095B32F > 8BBC24 A4000000 > mov edi,dword ptr ss:[esp+A4] > [edi+4C+4]
0095B336 > 8B4F 14 > mov ecx,dword ptr ds:[edi+14] >

思考

1 坑点 搜索的字符串 不要选中这个字符串的目标对象 容易掉进坑里

2 同时第一次搜索的是Ascii版本 控件改了 这里就怀疑不对了

3 进入XDBG 找 发现确实 找到的是一个选中目标的对象

4 换ASCII编码

换新思路

1.我们CE搜索名字字符串ASCII,后改变选择对象的名字,从这里入手,找到真正更新到UI界面的那个名字来源

5248815130849.png

2 断下第一处,发现还是之前的断下的流程里面

0095B52D > 8B11 > mov edx,dword ptr ds:[ecx] >
0095B52F > 8B42 28 > mov eax,dword ptr ds:[edx+28] >
0095B532 > 8D5F 4C > lea ebx,dword ptr ds:[edi+4C] > edi+4C+4 这一层是之前 貌似不对
0095B535 > 53 > push ebx > ebx+4
0095B536 > FFD0 > call eax >
0095B538 > 8B8E FC000000 > mov ecx,dword ptr ds:[esi+FC] >

3 继续F9,在不放开断点的情况下,又有一处访问( 操作一定要对!)

3.1 发现貌似是之前背包物品名字的地方 这里可能是的

3.2 还有很多处访问 需要判断分析

0040D1DC > 5E > pop esi >
0040D1DD > 5D > pop ebp >
0040D1DE > 5B > pop ebx > ebx:&"_p_AxIdType"

4.我们对层返回找到一个怪物对象

00E6D9B8 > 50 > push eax >
00E6D9B9 > 51 > push ecx >
00E6D9BA > E8 618287FF > call xyclient.6E5C20 > 来源22
00E6D9BF > 83C4 08 > add esp,8 > 得到怪物对象
00E6D9C2 > 85C0 > test eax,eax >
00E6D9C4 > 74 09 > je xyclient.E6D9CF >
00E6D9C6 > 8D48 4C > lea ecx,dword ptr ds:[eax+4C] > eax+4c+4
00E6D9C9 > FF25 38041901 > jmp dword ptr ds:[
00E6D9CF > B8 68913001 > mov eax,xyclient.1309168 >

继续根据对象

1 找到一个二叉树的对象来源

0066D51E > CC > int3 >
0066D51F > CC > int3 >
0066D520 > 8B41 04 > mov eax,dword ptr ds:[ecx+4] > [[ecx+4]+4]
0066D523 > 8B48 04 > mov ecx,dword ptr ds:[eax+4] > [eax+4]
0066D526 > 8079 21 00 > cmp byte ptr ds:[ecx+21],0 >
0066D52A > 75 2C > jne xyclient.66D558 >
0066D52C > 8B5424 04 > mov edx,dword ptr ss:[esp+4] >
0066D530 > 56 > push esi >
0066D531 > 8B32 > mov esi,dword ptr ds:[edx] > 16 ID1
0066D533 > 8B52 04 > mov edx,dword ptr ds:[edx+4] > 0 ID2 edx取上一层第二个参数 类型也是一个ID
0066D536 > 57 > push edi >
0066D537 > 8B79 14 > mov edi,dword ptr ds:[ecx+14] > +14比较是否为空
0066D53A > 3BFA > cmp edi,edx >
0066D53C > 77 0E > ja xyclient.66D54C > 大于 二个参数 就跳
0066D53E > 72 07 > jb xyclient.66D547 > 小于就跳 +8
0066D540 > 8B79 10 > mov edi,dword ptr ds:[ecx+10] > 比较ID
0066D543 > 3BFE > cmp edi,esi >
0066D545 > 73 05 > jae xyclient.66D54C > 大于等于 就跳
0066D547 > 8B49 08 > mov ecx,dword ptr ds:[ecx+8] > 右子树
0066D54A > EB 04 > jmp xyclient.66D550 >
0066D54C > 8BC1 > mov eax,ecx >
0066D54E > 8B09 > mov ecx,dword ptr ds:[ecx] > 左子树
0066D550 > 8079 21 00 > cmp byte ptr ds:[ecx+21],0 > +21结束标志
0066D554 > 74 E1 > je xyclient.66D537 >
0066D556 > 5F > pop edi >
0066D557 > 5E > pop esi >
0066D558 > C2 0400 > ret 4 >
0066D55B > CC > int3 >

2 好了 我们就只需要找这个二叉树根节点了,继续返回找基地址就是了

006E5C20 > A1 086B9C01 > mov eax,dword ptr ds:[19C6B08] > [[[[19C6B08]+88]+14+4+4]+4] 二叉树根节点
006E5C25 > 85C0 > test eax,eax >
006E5C27 > 74 1D > je xyclient.6E5C46 >
006E5C29 > 8B80 88000000 > mov eax,dword ptr ds:[eax+88] > [[[eax+88]+14+4+4]+4] 二叉树根节点
006E5C2F > 85C0 > test eax,eax > 有混淆 这里返回回来不要滚动
006E5C31 > 74 13 > je xyclient.6E5C46 >
006E5C33 > 8B4C24 08 > mov ecx,dword ptr ss:[esp+8] >
006E5C37 > 8B5424 04 > mov edx,dword ptr ss:[esp+4] >
006E5C3B > 51 > push ecx >
006E5C3C > 52 > push edx >
006E5C3D > 8D48 14 > lea ecx,dword ptr ds:[eax+14] > [[eax+14+4+4]+4] 二叉树根节点
006E5C40 > E8 6BF5FFFF > call xyclient.6E51B0 > 来源33
006E5C45 > C3 > ret >
006E5C46 > 33C0 > xor eax,eax >
006E5C48 > C3 > ret >
006E5C49 > CC > int3 >

3 注意这里有个新知识点就是,代码混淆如何处理呢?我们会在新的篇章中给大家讲解

二叉树汇编图示

德玛西亚3.0.png

属性来源

得到对象后 我们思考 对象下应该会有很多属性挂着

发现看到一连串近似的数字

$+8C A59CF5B6
$+90 A59CF5B6
$+94 F4F7DBDE
$+98 A59CF583
$+9C A59CF583
$+A0 A59CF520
$+A4 A59CF520
$+A8 A59CF5B6
$+AC A59CF5B6
$+B0 E2C954B6
$+B4 E217ADB6

属性加密解密

德玛西亚3.0.png

果然和一个固定值做异或得到真实的结果

最后我们经过之前我们找冒险岛的数据发现

其实和冒险岛很接近的一个加密算法

好了,今天的周围遍历就结束了

我们下节再见!

关注迪大,你值得拥有~

B0220.jpg


Heart1
0 0 上传作业
X
    网友评论 0条评论 0人参与
    请登陆会员1

    表情

    评论列表

×