|
|
|
Работа с памятью x86 приложения из x64
|
|||
|---|---|---|---|
|
#18+
запускаемое x86 из своего x86 читается и модифицируется без проблем. Специально проверил, то же самое для x64-x64 (хотя мне и не надо патчить x64 приложение, только x86). А вот читать и писать в память x86 приложения из своего x64 - никак. Кратко - сначала получаю инфу по образу приложения, чтобы узнать размеры кода и данных. Потом запускаю процесс с флагом SUSPENDED. Пытаюсь вычитать память, получаю ошибку 998 ERROR_NOACCESS Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Добавлял флаг DEBUG_PROCESS в CreateProcess, не помогло. LoadedImage.FileHeader.OptionalHeader.BaseOfCode при загрузке из x86 и x64 одинаковый (что логично) При загрузке из x86 LoadedImage.FileHeader.OptionalHeader.ImageBase = $400000, а из x64 =$40000000264000 Подскажите, в какую сторону копать? Не хочется городить костыли и выносить весь патчинг памяти в отдельное приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2019, 10:46 |
|
||
|
Работа с памятью x86 приложения из x64
|
|||
|---|---|---|---|
|
#18+
все, разобрался. Надо проверять какая архитектура у запускаемого приложения, и если оно x86 - приводить результат ImageLoad к типу PloadedImage, у которого FileHeader будет иметь тип PImageNtHeaders32. Можно еще проще - проверять у результата из ImageLoad размер из FileHeader.FileHeader.SizeOfOptionalHeader и если отличается - приводить к нужному типу. И сразу все становится правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2019, 11:31 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39768835&tid=2039861]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
255ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 577ms |

| 0 / 0 |
