Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2011, 01:55   #11
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

У меня есть вариант который работает, но к сожалению исходного кода нема, приведу пример на disassembler'е.

Код:
00211F50 >/$  8B4424 08     MOV EAX,DWORD PTR SS:[ESP+8]
00211F54  |.  83E8 00       SUB EAX,0                                ;  Switch (cases 0..1)
00211F57  |.  74 17         JE SHORT opengl32.00211F70
00211F59  |.  48            DEC EAX
00211F5A  |.  75 2E         JNZ SHORT opengl32.00211F8A
00211F5C  |.  A1 64BC2100   MOV EAX,DWORD PTR DS:[21BC64]            ;  Case 1 of switch 00211F54
00211F61  |.  50            PUSH EAX                                 ; /hLibModule => NULL
00211F62  |.  FF15 00702100 CALL DWORD PTR DS:[<&KERNEL32.DisableThr>; \DisableThreadLibraryCalls // Отключаем уведомления
00211F68  |.  E8 23220000   CALL opengl32.00214190                                                // Переходим по вызову
00211F6D  |.  C2 0C00       RET 0C
00211F70  |>  A1 64BC2100   MOV EAX,DWORD PTR DS:[21BC64]            ;  Case 0 of switch 00211F54
00211F75  |.  85C0          TEST EAX,EAX
00211F77  |.  74 11         JE SHORT opengl32.00211F8A
00211F79  |.  50            PUSH EAX                                 ; /hLibModule => NULL
00211F7A  |.  FF15 10702100 CALL DWORD PTR DS:[<&KERNEL32.FreeLibrar>; \FreeLibrary
00211F80  |.  C705 64BC2100>MOV DWORD PTR DS:[21BC64],0
00211F8A  |>  B8 01000000   MOV EAX,1                                ;  Default case of switch 00211F54
00211F8F  \.  C2 0C00       RET 0C
// Вот здесь все и происходит (второй post)
// Получаем системную директорию
// Конкатенируем \\opengl32.dll к строке
// Загружаем библиотеку
// Дальше получаем адреса оригинальных функций
// Как видно здесь по адресу сохраняются адреса оригинальных функций -> MOV DWORD PTR DS:[21BAD0],EAX
// То есть адрес вешается на (указатель на функцию) typedef void (APIENTRY *ptr_Foo)(type param)

И как не страна эт чужая библиотека работает, хотя я проделывал тоже самое раз 20 и не только так и у меня не работает...
И правки импорта у него нет в этой библиотеки, я ее облазил вдоль и поперек, только загрузка cg шейдеров

Последний раз редактировалось coNsept; 22.07.2011 в 01:59.
coNsept вне форума Ответить с цитированием
Старый 22.07.2011, 01:56   #12
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Код:
00214190  /$  A1 64BC2100   MOV EAX,DWORD PTR DS:[21BC64]
00214195  |.  81EC 04010000 SUB ESP,104
0021419B  |.  85C0          TEST EAX,EAX
0021419D  |.  56            PUSH ESI
0021419E  |.  0F85 8A000000 JNZ opengl32.0021422E
002141A4  |.  53            PUSH EBX
002141A5  |.  57            PUSH EDI
002141A6  |.  68 04010000   PUSH 104                                 ; /BufSize = 104 (260.)
002141AB  |.  8D4424 10     LEA EAX,DWORD PTR SS:[ESP+10]            ; |
002141AF  |.  50            PUSH EAX                                 ; |Buffer
002141B0  |.  FF15 0C702100 CALL DWORD PTR DS:[<&KERNEL32.GetSystemD>; \GetSystemDirectoryA
002141B6  |.  83C9 FF       OR ECX,FFFFFFFF
002141B9  |.  33C0          XOR EAX,EAX
002141BB  |.  BF 40B62100   MOV EDI,opengl32.0021B640
002141C0  |.  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
002141C2  |.  F7D1          NOT ECX
002141C4  |.  2BF9          SUB EDI,ECX
002141C6  |.  8BD9          MOV EBX,ECX
002141C8  |.  83C9 FF       OR ECX,FFFFFFFF
002141CB  |.  8BF7          MOV ESI,EDI
002141CD  |.  8D5424 0C     LEA EDX,DWORD PTR SS:[ESP+C]
002141D1  |.  8BFA          MOV EDI,EDX
002141D3  |.  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
002141D5  |.  4F            DEC EDI
002141D6  |.  8BCB          MOV ECX,EBX
002141D8  |.  C1E9 02       SHR ECX,2
002141DB  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
002141DD  |.  8BCB          MOV ECX,EBX
002141DF  |.  83E1 03       AND ECX,3
002141E2  |.  F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
002141E4  |.  83C9 FF       OR ECX,FFFFFFFF
002141E7  |.  BF 30B62100   MOV EDI,opengl32.0021B630                ;  ASCII "opengl32.dll"
002141EC  |.  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
002141EE  |.  F7D1          NOT ECX
002141F0  |.  2BF9          SUB EDI,ECX
002141F2  |.  8BD9          MOV EBX,ECX
002141F4  |.  83C9 FF       OR ECX,FFFFFFFF
002141F7  |.  8BF7          MOV ESI,EDI
002141F9  |.  8D5424 0C     LEA EDX,DWORD PTR SS:[ESP+C]
002141FD  |.  8BFA          MOV EDI,EDX
002141FF  |.  F2:AE         REPNE SCAS BYTE PTR ES:[EDI]
00214201  |.  8BCB          MOV ECX,EBX
00214203  |.  C1E9 02       SHR ECX,2
00214206  |.  4F            DEC EDI
00214207  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
00214209  |.  8BCB          MOV ECX,EBX
0021420B  |.  8D4424 0C     LEA EAX,DWORD PTR SS:[ESP+C]
0021420F  |.  83E1 03       AND ECX,3
00214212  |.  50            PUSH EAX                                 ; /FileName
00214213  |.  F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>; |
00214215  |.  FF15 08702100 CALL DWORD PTR DS:[<&KERNEL32.LoadLibrar>; \LoadLibraryA
0021421B  |.  85C0          TEST EAX,EAX
0021421D  |.  5F            POP EDI
0021421E  |.  A3 64BC2100   MOV DWORD PTR DS:[21BC64],EAX
00214223  |.  5B            POP EBX
00214224  |.  75 08         JNZ SHORT opengl32.0021422E
00214226  |.  5E            POP ESI
00214227  |.  81C4 04010000 ADD ESP,104
0021422D  |.  C3            RET
0021422E  |>  8B35 04702100 MOV ESI,DWORD PTR DS:[<&KERNEL32.GetProc>;  kernel32.GetProcAddress
00214234  |.  68 28B62100   PUSH opengl32.0021B628                   ; /ProcNameOrOrdinal = "glAccum"
00214239  |.  50            PUSH EAX                                 ; |hModule
0021423A  |.  FFD6          CALL ESI                                 ; \GetProcAddress
0021423C  |.  85C0          TEST EAX,EAX
0021423E  |.  A3 D0BA2100   MOV DWORD PTR DS:[21BAD0],EAX
00214243  |.  75 08         JNZ SHORT opengl32.0021424D
00214245  |.  5E            POP ESI
00214246  |.  81C4 04010000 ADD ESP,104
0021424C  |.  C3            RET
0021424D  |>  8B0D 64BC2100 MOV ECX,DWORD PTR DS:[21BC64]
00214253  |.  68 1CB62100   PUSH opengl32.0021B61C                   ; /ProcNameOrOrdinal = "glAlphaFunc"
00214258  |.  51            PUSH ECX                                 ; |hModule => NULL
00214259  |.  FFD6          CALL ESI                                 ; \GetProcAddress
0021425B  |.  85C0          TEST EAX,EAX
0021425D  |.  A3 B4B92100   MOV DWORD PTR DS:[21B9B4],EAX
00214262  |.  75 08         JNZ SHORT opengl32.0021426C
00214264  |.  5E            POP ESI
00214265  |.  81C4 04010000 ADD ESP,104
0021426B  |.  C3            RET
0021426C  |>  8B15 64BC2100 MOV EDX,DWORD PTR DS:[21BC64]
00214272  |.  68 04B62100   PUSH opengl32.0021B604                   ; /ProcNameOrOrdinal = "glAreTexturesResident"
00214277  |.  52            PUSH EDX                                 ; |hModule => NULL
00214278  |.  FFD6          CALL ESI                                 ; \GetProcAddress
0021427A  |.  85C0          TEST EAX,EAX
0021427C  |.  A3 20B92100   MOV DWORD PTR DS:[21B920],EAX
00214281  |.  75 08         JNZ SHORT opengl32.0021428B
Подождем Феникса, Stilet может они проделывали такое
coNsept вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подмена сессии Linel PHP 12 31.03.2010 22:03
подмена порта Bertrance Свободное общение 9 06.02.2010 08:30
Подмена IP ? KAKTYC PHP 2 28.10.2008 00:14
Подмена клавиш martinz Win Api 19 25.11.2007 09:02