ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > Реверсинг
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

1С:Предприятие v8, нужно раскопать
  #1  
Старый 17.12.2008, 23:08
Silvester
Новичок
Регистрация: 17.12.2008
Сообщений: 5
Провел на форуме:
12805

Репутация: 0
Question 1С:Предприятие v8, нужно раскопать

Строго говоря, нужен не реверсинг, а небольшое исследование с написанием утилиты. Суть в следующем: хочется программно получить текст окна текстового редактора (редактора кода) Конфигуратора 1С:Предприятия v8. Цель: написание утилит, облегчающих работу программиста-настройщика в этой среде.

Хорошим решением была бы DLL, которая экспортировала бы необходимые функции. Первое, что нужно - это получение текста текстового редактора по HWND окна этого текстового редактора.

Задача, как мне кажется, не самая простая, т.к. утилиты типа Winspector Spy, вроде бы, ничего не ловят (впрочем, я не спец, потому и обращаюсь).

Просто есть идея сделать некоторую автоматизацию работы в Конфигураторе 1С с помощью скриптового языка Autohotkey. Этот язык очень здорово работает с горячими клавишами, текстом, эмуляцией пользовательского ввода и т.п. Помимо прочего он позволяет очень легко получить, например, HWND активного окна. Но дальше затык. Методы получения контролов окна и их содержимого там есть, но в случае с 1С v8 они не срабатывают. Вообще, 1С v8 довольно "гадко" написана в этом плане: там свои библиотеки и всё это вместе - "чёрный ящик", не поддающийся реверсингу. Например, даже экспорта в DLL там толком нет. Но это лирика. А пока что есть задача получить текст окна текстового редактора.
 
Ответить с цитированием

  #2  
Старый 17.12.2008, 23:23
ProTeuS
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме:
4226592

Репутация: 2175


Отправить сообщение для ProTeuS с помощью ICQ
По умолчанию

нужно? стоит зада4а? еще и на конкретном скриптовом языке? тогда вам на фриланс.ру. тут предоставляют только помощь и советы, а не выполняют фор_фри зада4и за кого-то, просьбы о помощи я тут по4ему-то совершенно неувидил, ровно как и просьбы разъяснить какие-то техни4еские моменты
 
Ответить с цитированием

  #3  
Старый 17.12.2008, 23:35
Silvester
Новичок
Регистрация: 17.12.2008
Сообщений: 5
Провел на форуме:
12805

Репутация: 0
По умолчанию

Ну почему же, подойдёт любая инфа и любой совет.

Могу сформулировать вопрос так: а куда копать, собственно? Как получить текст окна, зная только HWND? Причём это HWND не контрола, в котором происходит редактирование, а всего окна (не главного окна приложения, конечно, но его дочернего окна в MDI интерфейсе). И этот контрол не распознаётся утилитами типа Winspector Spy. Поясню, что значит "не распознаётся". При наведении мышки на разные окна такие утилиты обычно показывают рамку вокруг распознанного окна. Так вот, в данном случае окно текстового редактора воспринимается как единое целое. Я просто не знаю, в каком направлении даже начать.

Топик этот составлен в надежде, что это интересно ещё кому-нибудь. В конце концов, ведь 1С - популярная программа.

Последний раз редактировалось Silvester; 17.12.2008 в 23:47..
 
Ответить с цитированием

  #4  
Старый 17.12.2008, 23:40
Silvester
Новичок
Регистрация: 17.12.2008
Сообщений: 5
Провел на форуме:
12805

Репутация: 0
По умолчанию

Цитата:
Сообщение от ProTeuS  
еще и на конкретном скриптовом языке?
Нет, ни в коем случае. Этот конкретный скриптовый язык я привёл только потому, что он хорошо работает с экспортируемымми функциями DLL (например, с Win32 API). А это значит, что если, например, проблема решается путём вызова каких-то API - то дело уже в шляпе.

Но вопрос пока сводится к следующему: а какими методами, утилитами и т.д. это вообще надо исследовать?
 
Ответить с цитированием

  #5  
Старый 18.12.2008, 01:57
neprovad
Постоянный
Регистрация: 19.10.2007
Сообщений: 794
Провел на форуме:
1013791

Репутация: 711


По умолчанию

Приведите очередность действий от и до. В духе - Открыли конфигуратор-Новая конфигурация-Создать то-то или то-то- Появилось окно- Надо управлять этим окном-Установить текст ему и т.п. Опишите задачу полностью, я полагаю времени у вас на это найдется. Чем черт не шутит, вдруг это достаточно просто окажется и мне удастся вам помочь.
upd.
не знаю как там работает программа, управляющая окнами, но mdi окна находятся на ура. пример:
далее следуют имена классов окон
V8TopLevelFramе->V8MDIClient->открыты окна с кодом двух модулей-V8MDILocalFrame(2 штуки соответственно)->V8ViewSplitter->V8Window->V8Window

Последний раз редактировалось neprovad; 18.12.2008 в 02:18..
 
Ответить с цитированием

  #6  
Старый 18.12.2008, 13:01
ProTeuS
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме:
4226592

Репутация: 2175


Отправить сообщение для ProTeuS с помощью ICQ
По умолчанию

находим хендл главного окна, пере4исляем все до4ерние, находим координаты либо положение, либо текст и выводим для всех (4тобы найти нужное окно, раз уж выходит 4то его никак "найти" нельзя), когда нашли. запоминаем и тот параметр, по которому нашли и будет нужным параметром поиска. далее аогритм всегда будет таков: ищем хендл мейна, пере4исляем все до4ерние, сравниваем например размеры окна с заданными эталаонными, если совпало - наше окно, в таком слу4ае посылаем ему SetWindowText(hWnd, Text). все
 
Ответить с цитированием

  #7  
Старый 18.12.2008, 18:21
Silvester
Новичок
Регистрация: 17.12.2008
Сообщений: 5
Провел на форуме:
12805

Репутация: 0
По умолчанию

Цитата:
Сообщение от neprovad  
Приведите очередность действий от и до. В духе - Открыли конфигуратор-Новая конфигурация-...
1. Открыли конфигуратор, меню "Конфигурация" - "Открыть конфигурацию".
2. Команда контекстного меню корневого объекта метаданных в дереве - "Открыть модуль приложения".

Собственно, и всё. Открывшееся окно имеет ClassNN "V8MDILocalFrame1", если держать курсор мыши над его заголовком. Если держать курсор мыши над текстом самого редактора, ClassNN - "V8Window3". Я не уверен, что цифры в конце ClassNN постоянны. Например, если создать текстовый документ, то второй ClassNN будет уже "V8Window4". (Для определения ClassNN я использовал инструмент AU3_Spy.exe.)

Далее. Пишем скрипт на AutoHotkey:
Код:
#IfWinActive ahk_class V8TopLevelFrame

F12::
OutputVar =

; Буква "А" везде означает активное окно.

;Определяет, на каком контроле (элементе управления) указанного окна находится фокус ввода.
ControlGetFocus, OutputVar, A
MsgBox %OutputVar% ; выдаёт "V8Window3"

; Считывает информацию о контроле, в данном случае - Hwnd
ControlGet, OutputVar, Hwnd,, V8Window3, A
MsgBox %OutputVar% ; выдаёт что-то типа "0x2103cc", похоже на правду

; Считывает текст из контрола
ControlGetText, OutputVar, V8Window3, A
MsgBox %OutputVar% ; выдаёт пустую строку, типа текста нет (это неправда)

; Читает текст указанного окна
WinGetText, OutputVar, A
MsgBox, %OutputVar% ; выдаёт заголовок окна типа "Конфигурация: Модуль приложения"
Вобщем, достать текст не выходит. Просмотрите код - он очень простой и прокомментирован.
Собственно, я не прошу написать рабочий скрипт на AutoHotkey.
Я лишь прошу ответить на вопрос: получится ли выдрать текст из этого "V8Window3", например, на Си, используя Win API?
Если да, то какие API и как нужно задействовать?
Может, есть ещё какие-то способы получить этот текст программно?
Примечание: программа Kleptomania этот текст читает, но там совсем другая технология.

Вобщем, если не лень, я прошу вас попробовать практически написать что-то на Си или ещё на чём-то. Советы ProTeuS понятны, но чтобы ими воспользоваться, у меня просто не хватит квалификации. Кроме того, не факт, что эти советы сработают, т.к., как я уже говорил 1С v8 - это чёрный ящик ещё тот. Здесь нужна рука опытного хакера, потому я так "по-наглому" и прошу, поймите пожалуйста правильно . На данном этапе меня интересует сама возможность подобного действия. Если эта возможность оправдается (в чём я не совсем уверен), тогда уже можно будет подумать, как это прикрутить к моим потребностям и всё такое...
 
Ответить с цитированием

  #8  
Старый 18.12.2008, 19:01
neprovad
Постоянный
Регистрация: 19.10.2007
Сообщений: 794
Провел на форуме:
1013791

Репутация: 711


По умолчанию

копать в сторону wbase81.dll
имена функций экспорта имеют весьма и весьма интересные названия. Если сложности с разбором, есть переходники в frame.dll, txtedui.dll и прочие com компоненты.
p.s. бесплатно только сами знаете что)
 
Ответить с цитированием

  #9  
Старый 18.12.2008, 19:18
Silvester
Новичок
Регистрация: 17.12.2008
Сообщений: 5
Провел на форуме:
12805

Репутация: 0
По умолчанию

Понятно, спасибо.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ