В общем так: возникла у меня проблема: отследить как ведет себя приложение написанное судя по всему на джаве и скомпилированое при помощи сабжа. Первое что бросилось в глаза - то что в секции rdata исполняемого файла идет перечисление всех глобальных переменных данного приложения, хотя как мне показалось, приложение в своей работе не обращается к этим данным. Имел ли кто нибудь опыт общения с файлами подобного типа и может ли посоветовать как быть и с чего начинать?
jakimushka rdata - это обычно секция read-only data. Сюда складываются имена публичных символов (импорт и экспорт). Возможно, компилятор поместил туда имена классов/глобальных переменных, чтобы можно было вывести их при возникновении исключения, например. Откройте файл в IDA Pro и поищите ссылки на эти имена в коде. Ну, раз даже имена переменных попадают в экзешник, реверсировать его будет не так сложно А что, собственно, нужно сделать и в чём загвоздка?
Дело в том что ссылок на эти имена Ида не нашла, также я ставил в ollydebug ере брикпоинты на чтение из этой секции - тоже без результатно, т. е. чтение есть, но не того чего надо. А суть вот какая: имеется покер написанный таким образом и надо в риалтайме тянуть из него значения выпавших карт/игроков сидящих за столом/торгов и т. д. Может есть другой более легкий вариант, чем реверсинг, если подскажете - буду премного благодарен.
а загвоздка в отсутствии большого опыта. Времени дано мало, нужно использовать его как можно более рационально, можете подсказать, как обычно решаются задачи подобного рода, хотя бы в общих чертах. т. е. например, где и как искать карты которые находятся на столе... может быть написано сумбурно, но в общих чертах должно быть ясно.
jakimushka Без опыта в реверсинге браться за такие задачи... Обычно люди тренируются на банальных крякмисах, а потом уже начинают копаться в больших прогах. Другой - это фотографировать содержимое окна покера и анализировать картинку на предмет наличия карт и т.д. Это не легче и не лучше. Т.к. прога написана на ЯВУ, рисование, очевидно, происходит не прямо через API GDI, а через кучу обьектов и интерфейсов, которые только усложняют реверсирование. Тем не менее, GDI (BitBlt, LineTo и т.д.) должно вызываться рано или поздно (если прога вообще рисует не через DirectX...) Попробуйте поискать эти функции в импорте экзешника или DLL, которые он подгружает. Допустим, Вы уже нашли место, где отрисовываются карты. А дальше что? Нужно будет модифицировать код, чтобы оповещалось внешнее приложение... В общем, простого решения я не вижу.
Quantum Найти область памяти где хранится список карт, и исследовать формат данных. Но это потребует некоторого опыта в реверсинге.