奇迹客户端汇编源码

时间:2022-12-28 08:32:00
MU 很老的一个游戏,代表着一个时代,给喜欢它的人们
网上找了个遍也找不到源码,不过现在有了,虽然是汇编的,虽然版本老了些
使用ida提取的,走了很多弯路,也花了很多时间,最终编译通过可运行,在看到画面的那一刹那,挺激动的 奇迹客户端汇编源码
加了个C入口函数winmain,汇编和C之间可以混合编程,希望有朝一日变成C代码,目前汇编代码量16W行左右
游戏已经去除保护,可以随意调试,也有做一些小的修改
http://download.csdn.net/detail/wy24789/8590657

52 个解决方案

#1


感谢分享   我下来看看

#2


感谢分享 奇迹客户端汇编源码

#3


#include "D:\\Administrator\\Documents\\Visual Studio 2008\\Projects\\toTraceWin\\toTraceWin.h"

居然有这么一行,楼主告诉我怎么才能编译通过

#4


奇迹客户端汇编源码

#5


引用 3 楼 hellogmh 的回复:
#include "D:\\Administrator\\Documents\\Visual Studio 2008\\Projects\\toTraceWin\\toTraceWin.h"

居然有这么一行,楼主告诉我怎么才能编译通过

注释掉,我自己输出调试信息的
使用masm32和vc6编译

#6


看到画面的那一刹那,挺激动的

#7


汇编代码量16W行左右?
这不是一般的恐怖 奇迹客户端汇编源码

#8


这个是用来干嘛的?

#9


引用 楼主 wy24789 的回复:
MU 很老的一个游戏,代表着一个时代,给喜欢它的人们
网上找了个遍也找不到源码,不过现在有了,虽然是汇编的,虽然版本老了些
使用ida提取的,走了很多弯路,也花了很多时间,最终编译通过可运行,在看到画面的那一刹那,挺激动的 奇迹客户端汇编源码
加了个C入口函数winmain,汇编和C之间可以混合编程,希望有朝一日变成C代码,目前汇编代码量16W行左右
游戏已经去除保护,可以随意调试,也有做一些小的修改
http://download.csdn.net/detail/wy24789/8590657

奇迹是用汇编写的?

#10


不容易,不容易,

#11


奇迹客户端汇编源码

#12


好厉害,谢谢分享!

#13


奇迹客户端汇编源码
楼主辛苦了,支持楼主的分享!~

#14


腻害了 是逆向工程产生的汇编吗

#15


learning

#16


用ida做的,其中变量很关键,最好在ida中先分析好,分析出来的变量名也要检查,有时会用个简写名,甚至关键字,后面就麻烦了,最好是原始名比如byte_50124这样的,不会冲突也直观,后面好对照着找问题, 在这份源码中应该还隐藏着直接地址,比如应该是mov eax,byte_50124这样的,代码可能是mov eax,50124h,像这样的问题改了很多了
最初这些数据变量都是在asm文件里的,不过.data?块的东西太多,编译不过,一直等待,才转到C,而C文件编译后变量在内存中的顺序全变了,就改成了一个变量char dword_485CDC[140000000];其它变量就加上它们之间的差值,比如你下面这样:
extern dword_485CDC:byte
byte_4875DC  equ dword_485CDC + 6400
byte_48D9DC  equ dword_485CDC + 32000
dword_48D9E0  equ dword_485CDC + 32004
dword_48F2E4  equ dword_485CDC + 38408
有些乱,先发个图吧,现在有发现两bug,一是地上会多出些东西,二是角色属性面板不正常,不能加点
奇迹客户端汇编源码
完整客户端和服务端下载,供测试用,请自行杀毒
http://pan.baidu.com/s/1m7Fau
再补充个linkall.bat文件

echo off
set LIB="\Program Files\Microsoft Visual Studio\VC98\Lib"
set baseLib=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib msvcrt.lib

if not exist rsrc.obj goto nores
echo on
"\Program Files\Microsoft Visual Studio\VC98\bin\Link.exe" /INCREMENTAL:NO /SUBSYSTEM:WINDOWS *.obj rsrc.obj %baseLib% /OUT:%1
goto TheEnd

:nores
echo on
"\Program Files\Microsoft Visual Studio\VC98\bin\Link.exe" /INCREMENTAL:NO /DEBUG /SUBSYSTEM:WINDOWS *.obj %baseLib% /OUT:%1

:TheEnd

echo off
dir %1
echo on

@pause

vc6不怎么好调试,汇编和源码没同步,od挺好的,编译时传全路径就能找到源码了,不用把源码复制到运行目录

#17


该回复于2015-04-16 15:08:25被管理员删除

#18


又见大神,收藏学习,顺便顶贴

#19


奇迹客户端汇编源码哦 哦

#20


感谢分享。。

#21


奇迹客户端汇编源码

#22


好久没来了好久没来了好久没来了

#23


该回复于2015-04-15 09:22:19被管理员删除

#24


使用正则找十六进制数加范围比较找到了几处错误,修正后地面上干净了
Regex(@"([a-f0-9]+)h",RegexOptions.IgnoreCase);
(nNum > 0x400000) && (nNum < 0x91D54B4)

main74_3.asm
9149行,mov edi, 57273D9h ;mov     edi, (offset word_57273D8+1)

main74_5.asm
12602行,push 57273D9h ;push    (offset word_57273D8+1)

main74_7.asm
794行,cmp esi, 7FE9D45h ;cmp esi, (offset dword_7FE9D44+1)
13197行,cmp esi, 81C152Ah ;cmp    esi, (offset dword_81C1528+2)

main74_9.asm
2846行,cmp edi, 81C495Ah ;cmp     edi, (offset dword_81C4958+2)
3228行,cmp eax, 81C495Ah ;cmp     edi, (offset dword_81C4958+2)

#25


这样的变量定义离真正的变量定义还有一段距离,

#26


该回复于2015-04-16 09:28:10被管理员删除

#27


so diao的样子啊!!

#28


main74_6.asm 8357行,修改后属性面板正常
mov edx, dword ptr dword_7CC7FE4
mov edx, dword ptr dword_81C17B4   ;edx改成ebx,之前也碰到过一次,ida怎么会这样
mov ebp, dword ptr dword_7CC7FE8

#29


奇迹客户端汇编源码
原来是以前批量替换时弄错了
mov edx, dword ptr dword_这种地方的edx都有可能是ebx,这下丑大了

#30


感谢分享!!!!

#31


      可以翻译成c语言吗?

#32


汇编源码,别逗了,任何exe岂不是都有源码了

#33


引用 31 楼 clever101 的回复:
      可以翻译成c语言吗?

想啊,希望能像传奇一样,不过凭一人之力很难

#34


奇迹客户端汇编源码
只分析和读取过 mu 的模型文件 奇迹客户端汇编源码

#35


奇迹客户端汇编源码

#36


奇迹客户端汇编源码

#37


奇迹客户端汇编源码好厉害

#38


帮忙顶一下,呵呵

#39


感谢楼主分享 奇迹客户端汇编源码

#40


奇迹客户端汇编源码

#41


该回复于2015-04-22 17:44:36被管理员删除

#42


一生之中唯一献给了《奇迹》

#43


厉害  拜大神

#44


牛啊,拜大神

#45


奇迹客户端汇编源码楼主辛苦

#46


奇迹客户端汇编源码

#47


!一步一步,真不容易啊。

#48


高大上啊,汇编,偶都不敢想,哎,我这小小码农啊

#49


悲哀的是我也是搞逆向的,2年前我都在相关MU的源码从没想去逆向它。。 佩服LZ。

#50


奇迹客户端汇编源码
楼主写个教程 教一下如何编译和运行阿...新手不懂

#1


感谢分享   我下来看看

#2


感谢分享 奇迹客户端汇编源码

#3


#include "D:\\Administrator\\Documents\\Visual Studio 2008\\Projects\\toTraceWin\\toTraceWin.h"

居然有这么一行,楼主告诉我怎么才能编译通过

#4


奇迹客户端汇编源码

#5


引用 3 楼 hellogmh 的回复:
#include "D:\\Administrator\\Documents\\Visual Studio 2008\\Projects\\toTraceWin\\toTraceWin.h"

居然有这么一行,楼主告诉我怎么才能编译通过

注释掉,我自己输出调试信息的
使用masm32和vc6编译

#6


看到画面的那一刹那,挺激动的

#7


汇编代码量16W行左右?
这不是一般的恐怖 奇迹客户端汇编源码

#8


这个是用来干嘛的?

#9


引用 楼主 wy24789 的回复:
MU 很老的一个游戏,代表着一个时代,给喜欢它的人们
网上找了个遍也找不到源码,不过现在有了,虽然是汇编的,虽然版本老了些
使用ida提取的,走了很多弯路,也花了很多时间,最终编译通过可运行,在看到画面的那一刹那,挺激动的 奇迹客户端汇编源码
加了个C入口函数winmain,汇编和C之间可以混合编程,希望有朝一日变成C代码,目前汇编代码量16W行左右
游戏已经去除保护,可以随意调试,也有做一些小的修改
http://download.csdn.net/detail/wy24789/8590657

奇迹是用汇编写的?

#10


不容易,不容易,

#11


奇迹客户端汇编源码

#12


好厉害,谢谢分享!

#13


奇迹客户端汇编源码
楼主辛苦了,支持楼主的分享!~

#14


腻害了 是逆向工程产生的汇编吗

#15


learning

#16


用ida做的,其中变量很关键,最好在ida中先分析好,分析出来的变量名也要检查,有时会用个简写名,甚至关键字,后面就麻烦了,最好是原始名比如byte_50124这样的,不会冲突也直观,后面好对照着找问题, 在这份源码中应该还隐藏着直接地址,比如应该是mov eax,byte_50124这样的,代码可能是mov eax,50124h,像这样的问题改了很多了
最初这些数据变量都是在asm文件里的,不过.data?块的东西太多,编译不过,一直等待,才转到C,而C文件编译后变量在内存中的顺序全变了,就改成了一个变量char dword_485CDC[140000000];其它变量就加上它们之间的差值,比如你下面这样:
extern dword_485CDC:byte
byte_4875DC  equ dword_485CDC + 6400
byte_48D9DC  equ dword_485CDC + 32000
dword_48D9E0  equ dword_485CDC + 32004
dword_48F2E4  equ dword_485CDC + 38408
有些乱,先发个图吧,现在有发现两bug,一是地上会多出些东西,二是角色属性面板不正常,不能加点
奇迹客户端汇编源码
完整客户端和服务端下载,供测试用,请自行杀毒
http://pan.baidu.com/s/1m7Fau
再补充个linkall.bat文件

echo off
set LIB="\Program Files\Microsoft Visual Studio\VC98\Lib"
set baseLib=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib msvcrt.lib

if not exist rsrc.obj goto nores
echo on
"\Program Files\Microsoft Visual Studio\VC98\bin\Link.exe" /INCREMENTAL:NO /SUBSYSTEM:WINDOWS *.obj rsrc.obj %baseLib% /OUT:%1
goto TheEnd

:nores
echo on
"\Program Files\Microsoft Visual Studio\VC98\bin\Link.exe" /INCREMENTAL:NO /DEBUG /SUBSYSTEM:WINDOWS *.obj %baseLib% /OUT:%1

:TheEnd

echo off
dir %1
echo on

@pause

vc6不怎么好调试,汇编和源码没同步,od挺好的,编译时传全路径就能找到源码了,不用把源码复制到运行目录

#17


该回复于2015-04-16 15:08:25被管理员删除

#18


又见大神,收藏学习,顺便顶贴

#19


奇迹客户端汇编源码哦 哦

#20


感谢分享。。

#21


奇迹客户端汇编源码

#22


好久没来了好久没来了好久没来了

#23


该回复于2015-04-15 09:22:19被管理员删除

#24


使用正则找十六进制数加范围比较找到了几处错误,修正后地面上干净了
Regex(@"([a-f0-9]+)h",RegexOptions.IgnoreCase);
(nNum > 0x400000) && (nNum < 0x91D54B4)

main74_3.asm
9149行,mov edi, 57273D9h ;mov     edi, (offset word_57273D8+1)

main74_5.asm
12602行,push 57273D9h ;push    (offset word_57273D8+1)

main74_7.asm
794行,cmp esi, 7FE9D45h ;cmp esi, (offset dword_7FE9D44+1)
13197行,cmp esi, 81C152Ah ;cmp    esi, (offset dword_81C1528+2)

main74_9.asm
2846行,cmp edi, 81C495Ah ;cmp     edi, (offset dword_81C4958+2)
3228行,cmp eax, 81C495Ah ;cmp     edi, (offset dword_81C4958+2)

#25


这样的变量定义离真正的变量定义还有一段距离,

#26


该回复于2015-04-16 09:28:10被管理员删除

#27


so diao的样子啊!!

#28


main74_6.asm 8357行,修改后属性面板正常
mov edx, dword ptr dword_7CC7FE4
mov edx, dword ptr dword_81C17B4   ;edx改成ebx,之前也碰到过一次,ida怎么会这样
mov ebp, dword ptr dword_7CC7FE8

#29


奇迹客户端汇编源码
原来是以前批量替换时弄错了
mov edx, dword ptr dword_这种地方的edx都有可能是ebx,这下丑大了

#30


感谢分享!!!!

#31


      可以翻译成c语言吗?

#32


汇编源码,别逗了,任何exe岂不是都有源码了

#33


引用 31 楼 clever101 的回复:
      可以翻译成c语言吗?

想啊,希望能像传奇一样,不过凭一人之力很难

#34


奇迹客户端汇编源码
只分析和读取过 mu 的模型文件 奇迹客户端汇编源码

#35


奇迹客户端汇编源码

#36


奇迹客户端汇编源码

#37


奇迹客户端汇编源码好厉害

#38


帮忙顶一下,呵呵

#39


感谢楼主分享 奇迹客户端汇编源码

#40


奇迹客户端汇编源码

#41


该回复于2015-04-22 17:44:36被管理员删除

#42


一生之中唯一献给了《奇迹》

#43


厉害  拜大神

#44


牛啊,拜大神

#45


奇迹客户端汇编源码楼主辛苦

#46


奇迹客户端汇编源码

#47


!一步一步,真不容易啊。

#48


高大上啊,汇编,偶都不敢想,哎,我这小小码农啊

#49


悲哀的是我也是搞逆向的,2年前我都在相关MU的源码从没想去逆向它。。 佩服LZ。

#50


奇迹客户端汇编源码
楼主写个教程 教一下如何编译和运行阿...新手不懂