轩辕春秋文化论坛 » 曹操传MOD制作交流 » 终于明白为什么会弹了


2012-3-24 13:28 砖家叫兽
终于明白为什么会弹了

我用OD调用 GETDLGITEMTEXTA  这个API函数

直接强制指定了函数地址

那么  跟我版本不一样的操作系统  即使也是XP  一样找不到这个API正确地址


相较于这个第一段
[url]http://www.xycq.net/forum/thread-246054-1-1.html[/url]
004D7C80    55              PUSH EBP
004D7C81    8BEC            MOV EBP,ESP
004D7C83    51              PUSH ECX
004D7C84    81EC 00020000   SUB ESP,200
004D7C8A    8BCC            MOV ECX,ESP
004D7C8C    51              PUSH ECX
004D7C8D    68 E87C4D00     PUSH Ekd5.004D7CE8                       ; ASCII "USER32.DLL"
004D7C92    FF15 24614800   CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar>; kernel32.LoadLibraryA
004D7C98    85C0            TEST EAX,EAX
004D7C9A    74 28           JE SHORT Ekd5.004D7CC4
004D7C9C    68 F47C4D00     PUSH Ekd5.004D7CF4                       ; ASCII "GetDlgItemTextA"
004D7CA1    50              PUSH EAX
004D7CA2    FF15 FC614800   CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; kernel32.GetProcAddress
004D7CA8    85C0            TEST EAX,EAX
004D7CAA    74 18           JE SHORT Ekd5.004D7CC4
004D7CAC    A3 D07C4D00     MOV DWORD PTR DS:[4D7CD0],EAX
004D7CB1    C605 CA7C4D00 0>MOV BYTE PTR DS:[4D7CCA],1
004D7CB8    E8 E3120000     CALL Ekd5.004D8FA0
004D7CBD    C605 CA7C4D00 0>MOV BYTE PTR DS:[4D7CCA],0
004D7CC4    8BE5            MOV ESP,EBP
004D7CC6    5D              POP EBP
004D7CC7    C3              RETN



修改了这一段以后  搜索API函数地址    这样就可以适用于各系统了


区别比较明显的是加了一段

接下来 我会更新引擎在之前的帖子
[url]http://www.xycq.net/forum/thread-247214-1-1.html[/url]

[color=Silver][[i] 本帖最后由 砖家叫兽 于 2012-3-24 16:13 编辑 [/i]][/color]

2012-3-24 21:57 513633522
难道新系统下不能玩  也是因为API位置的问题

2012-4-7 07:30 粟裕战神
不错啊

页: [1]
查看完整版本: 终于明白为什么会弹了


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.