Ollydbg未知标识符错误

时间:2012-08-15 13:28:07

标签: assembly x86

10002579   . 6A 00          PUSH 0
1000257B   . 68 59020000    PUSH 259
10002580   . 8B11           MOV EDX,DWORD PTR DS:[ECX]
10002582   . 6A 00          PUSH 0
10002584     6A 05          PUSH 5
10002586     50             PUSH EAX
10002587     FF52 18        CALL DWORD PTR DS:[EDX+18]
1000258A     84C0           TEST AL,AL
1000258C     75 2B          JNZ SHORT Pigeon.100025B9
1000258E     8B4E 10        MOV ECX,DWORD PTR DS:[ESI+10]
10002591   . 68 D5070000    PUSH 7D5
10002596   . 68 0000FF00    PUSH 0FF0000
1000259B   . 68 90640110    PUSH Pigeon.10016490     ;ASCII "STR_PIGEON_SEND_ERR_NOEMONEY"
100025A0   . 8B39           MOV EDI,DWORD PTR DS:[ECX]
100025A2   . FF15 04300110  CALL DWORD PTR DS:[<&Common.CnStrGet>]   ;  Common.CnStrGet
100025A8   . 8B9424 5C04000>MOV EDX,DWORD PTR SS:[ESP+45C]
100025AF   . 83C4 04        ADD ESP,4
100025B2   . 50             PUSH EAX
100025B3   . 52             PUSH EDX
100025B4   . E9 30020000    JMP Pigeon.100027E9
100025B9   > 8B46 10        MOV EAX,DWORD PTR DS:[ESI+10]

我需要更改10002584上的push 5以推送c350,但我在ollydbg上收到未知标识符错误

当我使用0xC350时,下面的代码会更改并且dll文件无法正常运行。

怎么做?

1 个答案:

答案 0 :(得分:2)

push 0xc350显然需要超过2个字节(这是push 5的长度)进行编码。它需要5个字节。

您无法将这5个字节压缩到2字节空间中。如果您尝试,则会覆盖并破坏以下说明:

10002586     50             PUSH EAX
10002587     FF52 18        CALL DWORD PTR DS:[EDX+18]

您需要将push 5(可能还有以下说明)替换为jmppush 0xc350的位置(以及jmp覆盖的说明,如果有的话)和jmp回来。