PDA

Просмотр полной версии : Обновление до v.170


Python
06.05.2011, 23:21
Вопрос собственно к разбирающимся в коде.

После обновления клиента до 170 версии офсеты остались на прежних местах.
Но есть одно отличие:
куски кода вида
MOV ECX,DWORD PTR SS:[LOCAL.2]
заменили на
MOV ECX,DWORD PTR SS:[ARG.1]

т.е. в некоторых местах перешли от LOCAL к ARG

Кто может объяснить что это за переменные,
и куда они указывают?

Заранее благодарю за ответы.

Dinmaite
07.05.2011, 00:07
Показал бы лучше конкретное место в коде.
Лично я по вырванному куску ничего не понимаю :)

Python
07.05.2011, 00:50
Вот небольшая функция.

00405680 /$ 83EC 08 SUB ESP,8 ; ELEMENTCLIENT.00405680(guessed Arg1,Arg2)
00405683 |. 8D4424 00 LEA EAX,[LOCAL.1]
00405687 |. 50 PUSH EAX
00405688 |. FF15 98D69600 CALL DWORD PTR DS:[<&USER32.GetCursorPos
0040568E |. 8B15 0CB9A500 MOV EDX,DWORD PTR DS:[0A5B90C]
00405694 |. 8D4C24 00 LEA ECX,[ESP]
00405698 |. 51 PUSH ECX
00405699 |. 8B82 74020000 MOV EAX,DWORD PTR DS:[EDX+274]
0040569F |. 50 PUSH EAX
004056A0 |. FF15 94D69600 CALL DWORD PTR DS:[<&USER32.ScreenToClie
004056A6 |. 8B4C24 0C MOV ECX,DWORD PTR SS:[ARG.3]
004056AA |. 8B5424 00 MOV EDX,DWORD PTR SS:[ARG.RETADDR]
004056AE |. 8B4424 10 MOV EAX,DWORD PTR SS:[ARG.4]
004056B2 |. 8911 MOV DWORD PTR DS:[ECX],EDX
004056B4 |. 8B4C24 04 MOV ECX,DWORD PTR SS:[ARG.1]
004056B8 |. 8908 MOV DWORD PTR DS:[EAX],ECX
004056BA |. 83C4 08 ADD ESP,8
004056BD \. C2 0800 RETN 8

Dinmaite
07.05.2011, 01:07
Либо мы пользуемся разными отладчиками, либо по разному настренными отладчиками.


00405680 /$ 83EC 08 SUB ESP,8
00405683 |. 8D4424 00 LEA EAX,DWORD PTR SS:[ESP]
00405687 |. 50 PUSH EAX ; /pPoint
00405688 |. FF15 98D69600 CALL DWORD PTR DS:[<&USER32.GetCursorPos>] ; \GetCursorPos
0040568E |. 8B15 0CB9A500 MOV EDX,DWORD PTR DS:[A5B90C] ; ElementC.00A5BFB0
00405694 |. 8D4C24 00 LEA ECX,DWORD PTR SS:[ESP]
00405698 |. 51 PUSH ECX ; /pPoint
00405699 |. 8B82 74020000 MOV EAX,DWORD PTR DS:[EDX+274] ; |
0040569F |. 50 PUSH EAX ; |hWnd
004056A0 |. FF15 94D69600 CALL DWORD PTR DS:[<&USER32.ScreenToClient>] ; \ScreenToClient
004056A6 |. 8B4C24 0C MOV ECX,DWORD PTR SS:[ESP+C]
004056AA |. 8B5424 00 MOV EDX,DWORD PTR SS:[ESP]
004056AE |. 8B4424 10 MOV EAX,DWORD PTR SS:[ESP+10]
004056B2 |. 8911 MOV DWORD PTR DS:[ECX],EDX
004056B4 |. 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4]
004056B8 |. 8908 MOV DWORD PTR DS:[EAX],ECX
004056BA |. 83C4 08 ADD ESP,8
004056BD \. C2 0800 RETN 8


А вообще различий между 170 и 167 версией клиента нет, тоесть переименование переменных полностью лежит на совести отладчика.

Python
07.05.2011, 02:05
Спасибо!
Пойду пинать свою "Олю".
:)

Python
17.05.2011, 01:58
Отискал...
Действительно настройка отображения отладчика (в настройках анализа кода)
Теперь все коментарии типа<&USER32.ScreenToClient> ARG.1 LOCAL.2
убрал, и вижу нормальный код.
Так гораздо проще.
:ban: