eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Помощь в доламывании WPF компоненты
Посл.ответ Сообщение

Ранг: 9.6 (гость)
Статус: Участник

Создано: 1 сентября 2013 05:12 New!
Цитата · Личное сообщение · #1

Приветствую!
Возникла сложность с разбором WPF-компонента. Моя проделанная работа:
1) de4dot убрал гадости протектора SmartAssembly
2) Удалены Strong name
3) Модифицирован механизм лицензирования
4) В baml-ресурсах компонента PublicKeyToken заменен на токен новой подписи
5) Сборки переподписаны.
Проблема в следующем - в сборке с самим компонентом появляется ругань на ресурсный словарь: "Can only base on a Style with target type that is base type 'PopupButton'." Не могу понять причину возникновения ошибки (не спец я в WPF) и следовательно как ее исправить тоже.

P.S. если потребуется, скажите какие сборки лучше выложить - чистые немодифицированные или измененные мной с наличием указанной проблемы.

Ранг: 508.6 (!)
Статус: Модератор

Создано: 1 сентября 2013 10:47 New!
Цитата · Личное сообщение · #2

у вас baml или xaml в проекте?

Ранг: 9.6 (гость)
Статус: Участник

Создано: 1 сентября 2013 10:52 · Поправил: iggvwh New!
Цитата · Личное сообщение · #3

baml

Ранг: 9.6 (гость)
Статус: Участник

Создано: 1 сентября 2013 11:38 New!
Цитата · Личное сообщение · #4

Залили библиотеки сюда
--> Link <--

Ранг: 508.6 (!)
Статус: Модератор

Создано: 1 сентября 2013 12:22 · Поправил: sendersu New!
Цитата · Личное сообщение · #5

iggvwh пишет:
1) de4dot убрал гадости протектора SmartAssembly


Точно убрал?
а то я гляжу на дллки в папке Patched а там еще мусора полно
дедот зовет nsXX неймспейсы но никак не #XX
http://prntscr.com/1oo0vb

baml (binary xaml) править руками не есть гуд

iggvwh пишет:
появляется ругань на ресурсный словарь


ет когда уже в студии подключаете и используете оттуда чтото?


upd: на екзетуле есть готовые пакеджы, например
http://forum.exetools.com/search.php?searchid=324680

Ранг: 9.6 (гость)
Статус: Участник

Создано: 1 сентября 2013 13:41 New!
Цитата · Личное сообщение · #6

sendersu пишет:
Точно убрал?

de4dot был запущен с параметром --dont-rename
sendersu пишет:
ет когда уже в студии подключаете и используете оттуда чтото?

После модификации и переподписания сборок я делал тестовое консольное приложение, где создавал инстанс компонента:
Code:
  1. var s = new ActiproSoftware.Windows.Controls.SyntaxEditor.SyntaxEditor();

На этой строке вываливался описанный эксепшн
sendersu пишет:
на екзетуле есть готовые пакеджы, например

Я там не зарегистрирован (нет инвайта) и строка с результатами поиска, которую вы указали, возвращает окно с предложением залогиниться. Можете указать название пакеджа и где его можно скачать?

Ранг: 508.6 (!)
Статус: Модератор

Создано: 1 сентября 2013 15:16 New!
Цитата · Личное сообщение · #7

звиняйте
http://prntscr.com/1oomal

глянул дату- наверное старое...

Ранг: 9.6 (гость)
Статус: Участник

Создано: 1 сентября 2013 21:25 New!
Цитата · Личное сообщение · #8

sendersu пишет:
на екзетуле есть готовые пакеджы

Я подумал, что там тулзы для модификации WPF/baml
Скорректировал руками токены в бамл коде еще одной библиотеки. Добился успешного запуска из консольного приложения. Решил что все - победа. Однако в WPF-ном проекте вылезла ошибка:
Could not load file or assembly 'ActiproSoftware.Shared.Wpf, Version=13.1.583.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
И это несмотря на то что все библиотеки у меня подписаны. Может, кто подскажет, куда копать.
Линк на последние модификации: --> Link <--

Ранг: 508.6 (!)
Статус: Модератор

Создано: 2 сентября 2013 01:59 New!
Цитата · Личное сообщение · #9

iggvwh пишет:
Однако в WPF-ном проекте вылезла ошибка:

а что и как используете из ActiPro в своем проекте?
я подключил все 3 длл, создал пару обьетков в коде, полет норм. (VS2010sp1)

Ранг: 9.6 (гость)
Статус: Участник

Создано: 2 сентября 2013 02:23 New!
Цитата · Личное сообщение · #10

sendersu пишет:
а что и как используете из ActiPro в своем проекте?

Ошибка у меня возникает как раз при создании экземпляра ActiproSoftware.Windows.Controls.SyntaxEditor.SyntaxEditor в проекте WPF. Причем неважно кодом их прописывать или разметкой xaml. В первом случае компилится но при старте падает с вышеуказанной ошибкой, во втором - падает (выводит ошибку) дизайнер студии (тоже VS2010sp1).

Ранг: 508.6 (!)
Статус: Модератор

Создано: 2 сентября 2013 11:37 New!
Цитата · Личное сообщение · #11

давайте ваш прожект студии
тут все ОК-но

вот такой код норм. проходит

ActiproSoftware.Windows.Controls.SyntaxEditor.SyntaxEditor se = new ActiproSoftware.Windows.Controls.SyntaxEditor.SyntaxEditor();
se.Text = "asdfasdfasf asd fads fasd f";
se.Name = "asdf";


логи

'WpfApplication1.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\user1\Documents\Visual Studio 2010\Projects\WpfApplication1\WpfApplication1\bin\Debug\ActiproSoftware.Shared.Wpf.dll'
'WpfApplication1.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\user1\Documents\Visual Studio 2010\Projects\WpfApplication1\WpfApplication1\bin\Debug\ActiproSoftware.SyntaxEditor.Wpf.dll'
'WpfApplication1.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework.Aero\v4.0_4.0.0.0__31bf3856ad364e35\PresentationFramework.Aero.dll'
'WpfApplication1.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\user1\Documents\Visual Studio 2010\Projects\WpfApplication1\WpfApplication1\bin\Debug\ActiproSoftware.Text.Wpf.dll'
'WpfApplication1.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\UIAutomationProvider\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationProvider.dll'
'WpfApplication1.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\UIAutomationTypes\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationTypes.dll'


дллки из последнего линка

Ранг: 9.6 (гость)
Статус: Участник

Создано: 2 сентября 2013 12:30 New!
Цитата · Личное сообщение · #12

Скрин ошибки:
--> Link <--
Проект:
--> Link <--

Ранг: 508.6 (!)
Статус: Модератор

Создано: 2 сентября 2013 13:26 · Поправил: sendersu New!
Цитата · Личное сообщение · #13

Завелся ваш код
http://prntscr.com/1ovf6j

а причина видеть в здесь (слева мой прож)
http://prntscr.com/1ovfa8

ну и последний момент
у вас
// Runtime Version:4.0.30319.225

у меня проекте
// Runtime Version:4.0.30319.18052


а вообще-то да, проблемы остались
для деталей - можно глянуть в логи Assembly Binding Log Viewer (у меня он тут "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\FUSLOGVW.exe" )

вот как он ругается на одну из длл -

http://prntscr.com/1ovhxp

Ранг: 9.6 (гость)
Статус: Участник

Создано: 2 сентября 2013 14:53 · Поправил: iggvwh New!
Цитата · Личное сообщение · #14

sendersu пишет:
вот как он ругается на одну из длл

Это как раз та ошибка, которая у меня в дизайнере вылезает. Вопрос в том - как уточнить какой участок кода и/или разметки baml ее вызывает.
Я почти уверен, что данная ошибка - на уровне baml-кода (ошибка вылезает при визуализации контрола, если говорить про рантайм), и сидит она где-то в ActiproSoftware.Shared.Wpf.dll. В ресурсном файле, содержащим baml-код ActiproSoftware.Shared.Wpf.g.resources есть "упоминания" ActiproSoftware.Shared.Wpf без указания PublicKeyToken-а. Предполагаю, что проблема в этом. Т.е. надо править baml-код ActiproSoftware.Shared.Wpf.g.resources.
Но с другой стороны, предыдущее изменения в ActiproSoftware.Shared.Wpf.g.resources я делал только заменой старого PublicKeyToken на новый, соответственно участки, которые не содержали токен не были изменены. А в первоначальном (не патченом) варианте все работало.
Известны ли вам методы, с помощью которых можно детектировать, кто хочет ActiproSoftware.Shared.Wpf с нулом в PublicKeyToken?


Ранг: 127.3 (ветеран)
Статус: Участник

Создано: 2 сентября 2013 20:54 New!
Цитата · Личное сообщение · #15

поиск строки ActiproSoftware.Shared.Wpf приводит в ActiproSoftware.SyntaxEditor.Wpf.dll и там можно увидеть две таких строки
ActiproSoftware.Shared.Wpf, Version=13.1.583.0, Culture=neutral, PublicKeyToken=null
находятся они в #Blob. Видимо откуда то из таблиц должна быть ссылка туда. по идее можно просто вписать нужный токен вместо null и пере подписать SyntaxEditor.

| Сообщение посчитали полезным: iggvwh


Ранг: 508.6 (!)
Статус: Модератор

Создано: 2 сентября 2013 20:56 New!
Цитата · Личное сообщение · #16

zeppe1in пишет:
PublicKeyToken=null


вопрос в том кто и когда его за -null- ил
ибо null не подходит никак (оригинал то был подписан!)

Ранг: 34.1 (посетитель)
Статус: Участник

Создано: 2 сентября 2013 21:57 New!
Цитата · Личное сообщение · #17

Пожалуй, задам глупый вопрос: а почему нельзя разобрать компонент на сырцы?


Ранг: 127.3 (ветеран)
Статус: Участник

Создано: 2 сентября 2013 22:33 New!
Цитата · Личное сообщение · #18

sendersu пишет:
вопрос в том кто и когда его за -null- ил

дак очевидно, что iggvwh его занулил, а когда и как ему и виднее
nick8606 пишет:
почему нельзя разобрать компонент на сырцы?

Можно. только запарно скорей всего.

Ранг: 508.6 (!)
Статус: Модератор

Создано: 3 сентября 2013 00:44 New!
Цитата · Личное сообщение · #19

zeppe1in пишет:
Можно. только запарно скорей всего.

я пробовал пару раз собираться с xaml-ями, ето адЬ
лучше уж с бамлями работать (мож не дорос еще, хз)

Ранг: 9.6 (гость)
Статус: Участник

Создано: 3 сентября 2013 00:56 New!
Цитата · Личное сообщение · #20

zeppe1in пишет:
дак очевидно, что iggvwh его занулил, а когда и как ему и виднее

Эт не я, чесслово
На самом деле я даже не представляю, на каком шаге я это мог сделать. Буду иметь ввиду на будущее.
В общем, похоже, что я его все-таки уговорил сдаться. Не знаю, что такое #Blob, но понял что через хекс-редактор я эти строки найду. Нашел, заменил, ошибка появилась другая, с которой я справился значительно быстрей. В итоге - заветное окошечко в тестовом проекте все же появилось.
sendersu, zeppe1in
Благодарю вас за помощь. zeppe1in, выручаете меня уже который раз
nick8606 пишет:
почему нельзя разобрать компонент на сырцы?

Для меня этот путь - мегатрудоемкий. Даже если вы через de4dot или другие инструменты сможете переименовать переменные до корректных имен, декрипнуть стринги и хотябы частично распутать спагетти-код, оставленный протектором останется еще туча мелочей и не очень мелочей, которые нужно будет править в студии и далеко не факт что вы сможете корректно восстановить логику проекта.

Немного оффтопа. Коллеги, можете ли вы порекомендовать материалы по кейгенингу. Видел, что для младших версий данного контрола есть генератор, но мало того, что он тоже накрыт протектором, дак еще и как к этому процессу подойти пока я очень смутро представляю. Желательно с примером под .Net

Ранг: 508.6 (!)
Статус: Модератор

Создано: 3 сентября 2013 10:17 New!
Цитата · Личное сообщение · #21

iggvwh
de4dot
bin->src
найти код валидации регинформации (можно прямо в рефлекторе/sae/ilspy/etc лазить по коду)
анализ
написание кг
тестинг

примеров кг видел на екзетуле (с видео), правда они все на vb.net там

Ранг: 9.6 (гость)
Статус: Участник

Создано: 4 сентября 2013 03:01 New!
Цитата · Личное сообщение · #22

Цель достигнута, нужные компоненты заработали.

P.S. Посмотрел код декриптера информации о лицензии... что-то вдруг лень стало мучаться с кейгеном
 eXeL@B —› Вопросы новичков —› Помощь в доламывании WPF компоненты
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS