首页
社区
课程
招聘
[求助]改了跳转就出错,哪出问题了?
发表于: 2007-10-24 10:38 5022

[求助]改了跳转就出错,哪出问题了?

2007-10-24 10:38
5022
刚在网上下了个东东来玩,关键跳很容易找到,不过跳转一改程序就运行出错,程序下载在这: GameServer.rar

无壳还带有调试信息,GameServer.exe前面的一段代码应该是后天人为的加上去的,负责加载GameServer.dll,然后GameServer.dll会弹出一个输入启动KEY的对话框,KEY对了才继续运行,关键跳很容易找到:
0CE44845  call    dword ptr [<&USER32.DialogBoxParamA>]       ; 弹出输入启动KEY的对话框
0CE4484B  mov     eax, dword ptr [CE8DBA4]
0CE44850  cmp     eax, ebx
0CE44852  mov     edi, eax
0CE44854  je      0CE4491B
0CE4485A  push    104                                         ; /BufSize = 104 (260.)
0CE4485F  lea     ecx, dword ptr [esp+105B8]                  ; |
0CE44866  push    ecx                                         ; |PathBuffer
0CE44867  push    esi                                         ; |hModule
0CE44868  call    dword ptr [<&KERNEL32.GetModuleFileNameA>]  ; \GetModuleFileNameA
0CE4486E  push    edi                                         ; /<%u> => 0
0CE4486F  lea     edx, dword ptr [esp+105A8]                  ; |
0CE44876  push    0CE7171C                                    ; |%u
0CE4487B  push    edx                                         ; |s
0CE4487C  call    dword ptr [<&USER32.wsprintfA>]             ; \wsprintfA
0CE44882  add     esp, 0C
0CE44885  mov     dword ptr [esp+18], 0CE715BC
0CE4488D  mov     dword ptr [esp+105A0], ebx
0CE44894  mov     byte ptr [esp+1C], bl
0CE44898  lea     eax, dword ptr [esp+105A4]
0CE4489F  push    eax                                         ; /Arg1
0CE448A0  lea     esi, dword ptr [esp+105B8]                  ; |
0CE448A7  lea     ebx, dword ptr [esp+1C]                     ; |
0CE448AB  mov     byte ptr [esp+108C8], 1                     ; |
0CE448B3  call    0CE43460                                    ; \GameSe_1.0CE43460
0CE448B8  test    eax, eax
[COLOR="Red"]0CE448BA  jnz     short 0CE4491F                      <---------改了这个跳转就运行出错[/COLOR]
0CE448BC  push    0CE71720                                    ;  机器码:
0CE448C1  lea     ecx, dword ptr [esp+106BC]
0CE448C8  push    ecx
0CE448C9  call    ebp
0CE448CB  lea     eax, dword ptr [esp+106B8]
0CE448D2  lea     edx, dword ptr [eax+1]
0CE448D5  /mov     cl, byte ptr [eax]
0CE448D7  |add     eax, 1
0CE448DA  |test    cl, cl
0CE448DC  \jnz     short 0CE448D5
0CE448DE  sub     eax, edx
0CE448E0  lea     edx, dword ptr [esp+eax+106B8]
0CE448E7  push    edx
0CE448E8  lea     ecx, dword ptr [esp+1C]
0CE448EC  call    0CE429C0
0CE448F1  push    0CE704C4
0CE448F6  lea     edx, dword ptr [esp+106BC]
0CE448FD  mov     ecx, 0CE8DC60
0CE44902  call    0CE3FAE0
0CE44907  push    30                                          ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0CE44909  push    0CE7172C                                    ; |启动失败
0CE4490E  push    0CE71738                                    ; |注册文件或启动码错误,请检测启动码或重新注册 !
0CE44913  push    0                                           ; |hOwner = NULL
0CE44915  call    dword ptr [<&USER32.MessageBoxA>]           ; \MessageBoxA
0CE4491B  xor     eax, eax
0CE4491D  jmp     short 0CE44930
[COLOR="Red"]0CE4491F  lea     ebx, dword ptr [esp+1A0][/COLOR]
0CE44926  call    0CE3D7E0
0CE4492B  mov     eax, 1
0CE44930  mov     ecx, dword ptr [esp+108BC]
0CE44937  mov     dword ptr fs:[0], ecx
0CE4493E  pop     ecx
0CE4493F  pop     edi
0CE44940  pop     esi
0CE44941  pop     ebp
0CE44942  pop     ebx
0CE44943  mov     ecx, dword ptr [esp+108A4]
0CE4494A  xor     ecx, esp
0CE4494C  call    0CE52DF3
0CE44951  add     esp, 108B4
0CE44957  retn

改了0CE448BA处的跳转程序最后会运行到一个全0的地址
00E4EE78    0000                 add     byte ptr [eax], al
然后自然是运行不下去了,有兴趣的帮我看下哪出问题了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 276
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不懂破解,帮你顶顶,或许上面的CALL有文章,你跟进去看看啊,或许程序的密码刚好是程序的某个入口,密码不对,入口也不对导致程序不能正常往下运行而退出,纯属猜测。
2007-10-24 15:06
0
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
如果软件用key对某个地方进行解码,然后执行,发现不对劲,执行异常代码后返回,你修改跳转起什么作用?
根据你贴出的代码,猜想有这个可能!
2007-10-24 16:18
0
游客
登录 | 注册 方可回帖
返回
//