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文件无法正常运行。
怎么做?
答案 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
(可能还有以下说明)替换为jmp
到push 0xc350
的位置(以及jmp
覆盖的说明,如果有的话)和jmp
回来。