Сейчас на форуме: Rio, johnniewalker, vsv1, Magister Yoda, Kybyx (+4 невидимых)

 eXeL@B —› Крэки, обсуждения —› Ресурсы WPF
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 14 января 2012 18:04
· Личное сообщение · #1

Добрый вечер!

Есть dll, содержащая ресурсы - графические и текстовые. Сама сборка - это плод WPF и BAML.
С помощью Reflector и доп. плагина удалось получить древовидную структуру ресурсов этой библиотеки и названия ресурсов, а также исходный код baml в формате xaml.

Возможно ли решить такую проблему: можно из полученной и отредактированной информации как-то собрать новую сборку, которую потом подсунуть исполяемому файлу?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 14 января 2012 18:35
· Личное сообщение · #2

Reflector - dll - ПКМ - Export Assembly Source Code - проект - {компиляция-фикс ошибок}xN -> своя дллка
подписи в дллках есть?

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

Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 03:50
· Личное сообщение · #3

Можно поподробнее, начиная с пункта "Проект"? В Вижуал студии?
На выходе я имею на шаге Export Assembly Source Codeя имею 2 файла Assembly.il и Global.il, а еще 4 файла в расширении .resources. Что дальше с этим делать правильно дальше?

Что имеется ввиду под подписью в дллках?
Выглядит в рефлекторе это - см. приложенный файл.

f344_15.01.2012_EXELAB.rU.tgz - screen.jpg




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 15 января 2012 04:02 · Поправил: plutos
· Личное сообщение · #4

Что имеется ввиду под подписью в дллках?

Signed strongly named Assembly?

-----
Give me a HANDLE and I will move the Earth.




Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 18:17
· Личное сообщение · #5

Вроде бы нет... Сейчас распотрошил ресурс, содержащий строковые константы отредактировал его в вижуал студии и скомпилил обратно в библиотеку - все подвязалось без проблем и приложение запустилось.

Полагаю, что если бы она была Signed strongly named Assembly, то так бы легко у меня все не прошло.



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 18:59
· Личное сообщение · #6

В получившися файле .resx получилось вот такое вот содержание:

<data name="images/iconlogo.jpg" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
AQEBCQIAAAAAAAAAAAAAAGoTAABqEwAAAAEAAQoPAgAAAGoTAAAC/9j/4AAQSkZJRgABAQEAYABgAAD/....

Эта именно та картинка, которую мне необходимо заменить сдуя по всему перекодированая в base64.
Однако попытка решения вопроса "в лоб" не помогла - скодировать картинку в Base64 и тупо вставить в файл .resx и потом конвертнуть resgen'ом в .resources.

Но при попытке сконвертить resgen'ом он ругнулся "Тип не может быть прочитан из данных в сроке... в позиции... Внутренняя структура типа могла быть изменена. Либо примените ISSerialazible для данного типа, либо предоставьте преобразователь типов ...."
и еще "...Недопустимый формат входного потока...".

Что делать? Есть идеи?



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 19:17 · Поправил: wesss
· Личное сообщение · #7

При этом я понимаю, что способ по конвертации из вот этой билеберды AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
AQEBCQIAAAAAAAAAAAAAAGoTAABqEwAAAAEAAQoPAgAAAGoTAAAC/9j/4AAQSkZJRgABAQEAYABgAAD/.... в картинку и, соответственно, обрано есть - Reflector это же делает! Есть ли какие приложения готовые для этого?



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 19:29
· Личное сообщение · #8

Хмммм... при этом кусок кода в этом файле

AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v
cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw
b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB
AQEBCQIAAAAAAAAAAAAAAHADAABwAwAAAAEAAQoPAgAAAHADAAACDAAAAE0AUwBCAEEATQBMAAAAYAAA
AGAAAABgAAEA/////
повторяется для каждого из ресурсов... Что бы это значило...



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 15 января 2012 19:33
· Личное сообщение · #9

Выложи чтоль длл-ку, а то как-то сам с собой общаешься, а остальные должны тут гадать.



Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 15 января 2012 19:39
· Личное сообщение · #10

wesss
скомпилировать в своем проекте нужную картинку, получить из него файл .resx. Base64 из своего проекта вставить в нужный.



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 19:46
· Личное сообщение · #11

Библиотека

0ad7_15.01.2012_EXELAB.rU.tgz - Publisher6.resources_.rar



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 20:00
· Личное сообщение · #12

yanus0 пишет:
wesssскомпилировать в своем проекте нужную картинку, получить из него файл .resx. Base64 из своего проекта вставить в нужный.


Сейчас еще покопаюсь и если все стабильно работать будет, то с меня коньяк



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 21:06
· Личное сообщение · #13

Одна проблема решена - картинки могу легко менять - все компилится, собирается обратно и работает, вроде даже стабильно...

Но решение одной проблемы, как обычно выявило другую - часть контролов отрисовывается прямо на лету, в том числе и некоторые логотипы. Код и место, которое за это отвечает с помощью рефлектора установил - теперь вопрос - как правильно редактировать .baml/.xaml код, который я вижу в рефлекторе?



Ранг: 137.9 (ветеран), 45thx
Активность: 0.080
Статус: Участник

Создано: 15 января 2012 21:42
· Личное сообщение · #14

wesss
никак. xaml нужно заново перекомпилировать в baml. Готовый baml заменять.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 15 января 2012 21:42
· Личное сообщение · #15

Пользуйся кнопкой "Правка", не создавай сообщения подряд.
З.Ы. И нет, не надо мне намекать про скрипт, который мёржит сообщения, намекните лучше кому-нить, кто кодит двиг форума.



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 21:52 · Поправил: wesss
· Личное сообщение · #16

Какими это средствами делается? Студией? Blender'ом? Пытаюсь создать как-то эти файлы в студии - ругается на все что можно - например - есть кусок кода, полученный при помощи Reflector/BAML Viewer

<Login xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Label Column="0" Row="0" Content="UserName" />
<TextBox Column="1" Row="0" />
<Label Column="0" Row="1" Content="Password" />
<TextBox Column="1" Row="1" />
</Grid>
</Login>


При попытке создать в студии 2010 WPF приложение или библиотеку ругается на то, что Login нет в пространстве имен (подключение дополнительных референсов не помогает)...

Прошу подсказать как правильно это сделать ;)

Archer пишет:
Пользуйся кнопкой "Правка", не создавай сообщения подряд.З.Ы. И нет, не надо мне намекать про скрипт, который мёржит сообщения, намекните лучше кому-нить, кто кодит двиг форума.


Ок - уяснил



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 15 января 2012 22:47
· Личное сообщение · #17

wesss
очевидно что самого .xaml файла недостаточно -надо подключать еще код (.cs) что есть за ним
есть какой код в вашей библе?

сам тоже занимаюсь щас похожим - ип..ся с компиляцией xaml (ResourceDictionary) - оказалось что надо создавать проект типа WPF, а у мну был не он...



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2012 23:06
· Личное сообщение · #18

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

То есть создавать именно проект WPF application? А там дальше как?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 16 января 2012 13:12
· Личное сообщение · #19

wesss
да уж. я вообще там не вижу юзер кодеса, суто одни ресурсы
а можно глянуть на ваш VS прожект?



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 16 января 2012 21:22
· Личное сообщение · #20

sendersu пишет:
да уж. я вообще там не вижу юзер кодеса, суто одни ресурсыа можно глянуть на ваш VS прожект?


Да в том то и дело, что пока VS прожекта и нет! Пытаюсь создать через студию New WPF Application и к нему как-то приаттачить из этой дллки ресурсы - пока не понимаю как - бьюсь над проблемой, описанной в посте #16 в этой темы...

Понимаю, что это граничит с ламерством, но очень прошу дать мне направление куда двигаться с этой темой...



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 17 января 2012 16:26
· Личное сообщение · #21

wesss
согласен, если подключать login.xaml (взятого из ресурсов дллки) то он не скомпилится по той проблеме что прожект не видит класса Login
а кода то и нету никакого в той дллке - она суто ресурсная
что более интересно, нету никакого импорта по дллкам что имеют класс Login
Вопрос к вам - есть ли в других дллках определение класса Login? (ето же относиться ко всем другим .xaml)
если есть - закидайте



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 января 2012 17:46
· Личное сообщение · #22

В других Xaml ресурсов есть ссылки на внешние библиотеки и на экзешник как на сборку- буду за компом-пришлю пример.

Вопрос в другом- в каком месте я не прав, если утверждаю, что если baml viewer нормально ДЕкодирует baml, то существует алгоритм котировки обратно его... Или нет?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 17 января 2012 20:10
· Личное сообщение · #23

wesss пишет:
существует алгоритм котировки обратно его

да, но по ходу ето делает компилятор, а ему надо увидеть все типы, классы и т.д
о варианте xaml->baml какойто утилитой не слыхал.



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 января 2012 23:33
· Личное сообщение · #24

Вот тут есть ссылки на Telerik.Windows.Controls - это длл библиотека, подключаю ее в референсах проекта, помогает избавится от проблем с ее пространством имен.

SS6Pub.Controls - это ссылка на сам экзешник, в котором по сути есть этот самый объект Логин - как правильно в студии описать и подключить все, чтобы он не орал?

<Login
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:pubControls="clr-namespace:SS6Pub.Controls"
xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls" xmlns:ns="clr-namespace:SS6Pub.Localization"

Width="300" Height="362" WindowStyle="SingleBorderWindow" ResizeMode="NoResize" Topmost="true" WindowStartupLocation="CenterScreen" Style="{StaticResource WindowIconInTaskbar}" FocusedElement="{Binding ElementName=user}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Style="{StaticResource LayoutTop1}" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Style="{StaticResource LayoutFooter}" />
</Grid.RowDefinitions>
<pubControls:TopHeader />
<Rectangle Row="1" Style="{StaticResource StyleMainContent}" RowSpan="3" />
<Grid Name="LoginGrid" Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_Name}" />
<TextBox Name="user" Column="1" Margin="0,0,5,0" Height="22" TabIndex="10" ToolTip="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_CaseSensitiveUsername}" />
<Label Row="1" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_Password}" />
<PasswordBox Name="password" Row="1" Column="1" Margin="0,0,5,0" Height="22" TabIndex="20" MaxLength="18" ToolTip="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_CaseSensitivePassword}" />
<Label Row="2" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_Host}" ToolTip="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_HostDescription}" />
<ComboBox Name="Server" Column="2" Row="2" ColumnSpan="2" IsEditable="true" DisplayMemberPath="HostName" SelectedValuePath="HostName" ToolTip="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_HostDescription}" ItemsSource="{Binding HostNames}" />
<Label Row="3" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_Language}" />
<ComboBox Name="cmbCulture" Row="3" Column="2" SelectedValuePath="Name" VerticalAlignment="Top" />
<StackPanel Row="4" Column="1" Orientation="Horizontal">
<CheckBox Name="ChkSettings" IsChecked="True" Margin="0,0,10,0" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_SaveSettings}" />
<CheckBox Name="ChkPassword" IsChecked="True" Content="{ns:Resx ResxName=SS6Pub.Resources.Cultures.Editor, Key=Login_SavePassword}" />
</StackPanel>
<StackPanel Row="5" Column="1" Orientation="Horizontal">
<Button Name="btnOK" Row="1" Height="23" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="75" Style="{StaticResource TextButtonOK}" IsDefault="true" />
<Button Name="btnCancel" Row="1" IsCancel="true" Height="23" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="75" Style="{StaticResource TextButtonCancel}" />
</StackPanel>
<StackPanel Row="6" ColumnSpan="2" />
</Grid>
<telerik:RadProgressBar Name="LoginProgressBar" Row="2" Minimum="0" Maximum="100" Margin="5,5,5,5" Style="{StaticResource StyleProgressBar}" />
<TextBlock Name="LoginProgressBarMessage" Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" />
<pubControls:Footer Row="4" />
</Grid>
</Login>


b23d_17.01.2012_EXELAB.rU.tgz - S6PUB.jpg



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 января 2012 23:55
· Личное сообщение · #25

Доброй ночи!
Разобрался - это baml viewer криво файл ресурсов декодировал. Он имя класса подменял именем файла xaml.

Теперь получается файлы xaml переносить в студию, все билдится, НО..... после билда те baml, которые я подкладываю базовому приложению безнадежно валят его, если отредактированы. Если нет - то приложение спокойно работает как и раньше.

Что с этим делать? Почему это возникает?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 19 января 2012 03:39
· Личное сообщение · #26

wesss
ежели есть полная сборка (длл) с ресурсами (уже своими) то лучше ее заменять а не отдельно baml
wesss пишет:
baml viewer криво файл ресурсов декодирова

ето кто?



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 января 2012 13:12 · Поправил: wesss
· Личное сообщение · #27

Там не маленькая сборка сама по себе - есть ли шанс, что при таких явлениях, когда даже замена одного ресурса вываливает приложение, что после того как я соберу всю сборку с изменениями она не будет вести себя также?!

Просто хотелось бы понять с точки зрения функционирования почему так происходит? Код же тот же самый по сути - свойство только компонента другое и все, а реакция - вываливание приложения....

Baml Viewer - это аддон к Рефлектору.



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 19 января 2012 14:07 · Поправил: sendersu
· Личное сообщение · #28

wesss пишет:
когда даже замена одного ресурса вываливает приложение

очень похоже на ситуацию когда сборка подписана (pubkeytoken)
еще встречался с таким фактом, что подпись может стоять и в baml-ях

возвращаясь еще к
wesss пишет:
это baml viewer криво файл ресурсов декодировал

взял для примера 1й попавшийся бамл - глянул в рефл и сае - в чем кривость декодирования?
(см аттач)


wesss пишет:
вываливание приложения

например имена ресурсов поменялись - проверьте что имена 1 в 1, иначе приложение их не найдет

еще можно дот нет трейсером пройтись - понять на чем именно падает....

767b_19.01.2012_EXELAB.rU.tgz - refl_sae_baml.zip



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 19 января 2012 15:20 · Поправил: wesss
· Личное сообщение · #29

Подписана сборка или эта библиотека?
Вроде бы никаких подписей ни в exe, ни в dll при дизасемблировании не видно... Есть какие-то отличие не особенности в коде?

Аттач пока не смотрел- на мой взгляд, кривость в том, что приведенный пример в этой же теме пример с <Login> </Login> на самом деле <window>. Может быть я ошибаюсь.

Дот неттрейсер попробую, отпишусь по результатам.



Ранг: 1.4 (гость)
Активность: 0.010
Статус: Участник

Создано: 20 января 2012 00:06
· Личное сообщение · #30

sendersu пишет:
еще можно дот нет трейсером пройтись - понять на чем именно падает....


Попробовал - можете как-то прокоментировать данный результат?

Как определить подписана сборка или нет?

ea50_19.01.2012_EXELAB.rU.tgz - kdt.jpg


. 1 . 2 . >>
 eXeL@B —› Крэки, обсуждения —› Ресурсы WPF
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати