geleisisisi 发表于 2022-4-10 11:50

【CE/C++】【未完结】古剑3逆向找call

本帖最后由 geleisisisi 于 2022-4-16 22:36 编辑

古剑3是我遇到最难调试的游戏,我就不明白找一个添加物品的call怎么就这么难。两年来我是辗转反侧如鲠在喉,但是都毫无进展。不过在学了点C++的皮毛后,我突然灵光一闪找到了突破口,花了两个月的时间才追明白运行结构,然后写了个修改器。其实修改器只是附带品,我真正在意的是逆向的过程,和程序的结构与逻辑,于是打算做一个关于古剑3逆向找call的视频。
因为我是只菜鸡,无论是在CE还是C++的方面。所以很多操作或者写法会显得很幼稚,希望大佬们多多指出我的缺点,让我能够有所进益。

使用工具:
Cheat Engine:大部分时候使用的都是CE
Visual Studio:遍历函数名和ID的时候会用到一些非常基础的C++编程,但是跳过也不影响逆向的理解

本视频所需基础:
1.需要拥有基础的汇编知识。比如一些简单的mov,cmp,test,jmp,push,pop
2.能够较为熟练运用CE,尤其是在下断追踪这一块
3.知道什么是栈,什么是call
4.知道什么是结构体
5.最好有一定的找call的经验
6.教程会涉及到大量的指针,所以需要对指针有一定的了解,就算如此还是会很容易就把自己绕晕

目前预定的章节主要分为几个部分:(有可能会变动)
1.共用代码/共用函数的处理方法。
2.成功断下后,根据不停的比较得出结构体大概是怎么样影响函数运行的。
3.介绍rcx结构体,68,69,70,22类型数据,计算函数B3B00,重铸结构体函数B67B0,共用函数B0210的大致结构
4.实战,如何过滤出自己想要的函数。以及获取函数后,如何写汇编码
5.遍历函数名,以及通过函数名获取想要的70类型地址
6.如何获取各种ID
7.类型地址如何追基址。
8.批量添加的困扰
9.添加契约时遇到的判断阻碍

视频地址:
https://www.bilibili.com/video/BV1aL4y157KR
更新至第2章

修改器地址:
https://bbs.3dmgame.com/thread-6290222-1-1.html
代码部分:
第一章:共用代码/共用函数的处理方法
物品数量增减断点:

//code from here to '' will be used to enable the cheat
alloc(newmem,2048,"Gujian3.exe"+B4278)
label(returnhere)
label(originalcode)
label(exit)
alloc(cmp_addr_item,8)
registersymbol(cmp_addr_item)

newmem:
push rax
mov rax,
cmp r8,rax
jne originalcode
nop

originalcode:
pop rax
movups ,xmm0
mov ,r10d

exit:
jmp returnhere

"Gujian3.exe"+B4278:
jmp newmem
nop 3
returnhere:





//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"Gujian3.exe"+B4278:
movups ,xmm0
mov ,r10d
//Alt: db 41 0F 11 00 45 89 50 0C
dealloc(cmp_addr_item,8)
unregistersymbol(cmp_addr_item)

断点1:

//code from here to '' will be used to enable the cheat
alloc(newmem,2048,"Gujian3.exe"+C86FB)
label(returnhere)
label(originalcode)
label(exit)

newmem:
push rax
push rbx
mov rax,
mov rbx,Gujian3.exe+2E586E8//E8 =rightclick;D0 =mouseup;E0 = mouseclick
mov rbx,
cmp rax,rbx
jne originalcode
nop
originalcode:
pop rbx
pop rax
mov qword ptr ,00000000

exit:
jmp returnhere

"Gujian3.exe"+C86FB:
jmp newmem
nop 4
returnhere:





//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"Gujian3.exe"+C86FB:
mov qword ptr ,00000000
//Alt: db 48 C7 44 24 20 00 00 00 00

alicc 发表于 2022-4-10 12:53

侃遍天下无二人 发表于 2022-4-10 12:50
你不直接逆向分析小幸姐的修改器吗,我还想知道她是咋实现切换领队的(猜测她是生成了一段lua脚本并设法让 ...

有些东西.. 非必要的时候,直接取得结果没啥用...

侃遍天下无二人 发表于 2022-4-10 12:50

你不直接逆向分析小幸姐的修改器吗,我还想知道她是咋实现切换领队的(猜测她是生成了一段lua脚本并设法让游戏执行了)

快乐的鸡蛋黄 发表于 2022-4-10 12:02

先收藏,今年修炼完成,明年来看!

darkefire 发表于 2022-4-10 12:48

这个要收藏一下,古剑一直打不过,有修改器就好了

侃遍天下无二人 发表于 2022-4-10 12:52

你修改物品的时候游戏会提示“获得 ***x1”吗

Joduska 发表于 2022-4-10 14:38


先收藏,今年修炼完成,明年来看!

shuangyan 发表于 2022-4-10 14:59

居然有古剑3???

轩辕剑syz 发表于 2022-4-10 15:32

小木曾雪菜 发表于 2022-4-10 15:45

学习了,这个游戏还真是费劲
页: [1] 2 3 4 5
查看完整版本: 【CE/C++】【未完结】古剑3逆向找call