Войти
  1. ВКонтакте
  2. Facebook
  1. »
  2. »
  3. »
  4. Free Address Book
Скрыть панель справаПоказать панель справа

Free Address Book

Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 1 отправлено 23:12, 14.02.2014
Free Address Book




Персональная электронная адресная книга, чьи функции заключаются в организации и хранении персональных контактов пользователя. Запускать её можно с любого переносного носителя информации. Используя Free Address Book, можно хранить различные заметки о том или ином человеке, телефонные номера и адреса электронной почты. Поддерживается функция печати любых данных, которые хранятся в этой программе.

Разработчик: GAS Softwares
Система: Windows XP/Vista/7

Последний раз редактировал WYLEK 15:16, 18.03.2017
Прибывший
  1. Офлайн
  2. Участники
  3. 7 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 2 отправлено 23:13, 14.02.2014
Потрясающе... Попросил за деньги! в теме про платные переводы сделать русификатор для Free Address Book - молча втихомолку снесли тему...
Ни ответа ни привета...
,а делают бесплатно!
Красавцы ящитаю.

Повторю вопрос тут.
Готов оплатить создание русифицированной версии программы Free Address Book ( http://addressbook.gassoftwares.com/ ) (разумеется в разумных пределах)
Есть желающие?
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 3 отправлено 23:13, 14.02.2014
GDragon;10201 писал:Потрясающе... Попросил за деньги! в теме про платные переводы сделать русификатор для Free Address Book - молча втихомолку снесли тему...

Интересно белки пляшут... Действительно, а куда делась та платная тема? surprised Кто уже удалил?

GDragon;10201 писал:Готов оплатить создание русифицированной версии программы Free Address Book ( http://addressbook.gassoftwares.com/ ) (разумеется в разумных пределах)

Программа написана в NET Framework 2.0, Радиаликс вроде как переводит, но вот создает конечный файл с ошибками и из-за этого файл не запускается. То ли Framework у меня криво поставлен, то ли еще какая байда. Пока мне не до него. Подозреваю, что Leserg может справиться с этой проблемой wink

Последний раз редактировал WYLEK 15:18, 18.03.2017
Мастер
  1. Офлайн
  2. Администраторы
  3. 1231 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 4 отправлено 23:13, 14.02.2014
Цитата Nexus ()
Действительно, а куда делась та платная тема? Кто уже удалил?

видимо после моего предложения смахнули за ненадобностью, что то часто стали темы пропадать wink


------------------------------------------
"Возможно всё! На невозможное просто требуется больше времени."
Мудрец из Шангри Ла
Легенда
  1. Офлайн
  2. Админ
  3. 1606 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 5 отправлено 23:13, 14.02.2014
GDragon;10201 писал:Потрясающе... Попросил за деньги! в теме про платные переводы сделать русификатор для Free Address Book - молча втихомолку снесли тему...


Сразу читаем здесь - http://www.wylek.ru/index/pravila_sajta/0-4
Потом здесь - http://www.wylek.ru/index/0-2




В завершение - платных русификаторов на сайте больше не будет. Сайт не для этого создавался.

Последний раз редактировал WYLEK 15:20, 18.03.2017
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 6 отправлено 23:13, 14.02.2014
GDragon;10201 писал:Готов оплатить создание русифицированной версии программы Free Address Book ( http://addressbook.gassoftwares.com/ ) (разумеется в разумных пределах)

Nexus;10202 писал:Программа написана в NET Framework 2.0, Радиаликс вроде как переводит, но вот создает конечный файл с ошибками и из-за этого файл не запускается.

Да, так и есть. Radialix открывает файл, но создает его нерабочим, а все остальные редакторы нервно курят в сторонке. Проблема в самой программе. Там автор использует собственную функцию обработки строк. Пока что на данном этапе программу локализовать очень затруднительно. Можно было бы декомпилировать её до исходника, перевести и собрать обратно, но вместо строк получается мусор:
Строки

Сидеть и угадывать, где какая строка wacko - не вариант. Надо еще подумать...

gazon01;10205 писал:чего то я затупил, подскажите как ЖК строку удлинить IDA подключена

В каком смысле? Если в Radialix'e есть ссылки, то просто её переводишь не взирая на длину. Если ссылки нет, то надо сидеть разбираться (возможно или невозможно). Да посмотри на форуме, сколько примеров опубликовано!

Последний раз редактировал WYLEK 15:46, 18.03.2017

------------------------------------------
Кто ищет, тот всегда найдет!
Прибывший
  1. Офлайн
  2. Участники
  3. 7 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 7 отправлено 23:13, 14.02.2014
Цитата Leserg ()
Radialix открывает файл, но создает его нерабочим,
Да я тоже на этом споткнулся и пополз искать профессионалов smile
Легенда
  1. Офлайн
  2. Админ
  3. 1606 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 8 отправлено 23:14, 14.02.2014
Цитата GDragon ()
Да я тоже на этом споткнулся и пополз искать профессионалов


Не все программы можно перевести. А если ее пересобрать, то вполне возможно прога будет глючить...
Судя по коду, ее создали наши узкоглазые братья по разуму biggrin
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 9 отправлено 23:14, 14.02.2014
WYLEK;10209 писал:А если ее пересобрать, то вполне возможно прога будет глючить..

Я пока что делал это только два раза и оба они были успешными (один - Corner-A ArtStudio v.1.3.3, второй - My Daily Wallpaper v6.50). Ну, по крайней мере никто не написал, что не работает. happy

А для сборок NET процедура декомпиляции предусмотрена самим разработчиком - Microsoft (он же и инструменты предлагает - ildasm). Просто получается не исходный код программы на языке C#, а нативный (машинный), со своей логикой и структурой. Его потом можно компилировать обратно в программу - инструмент ilasm. Потом, если автор программы конструировал окна в визуальном редакторе, то после декомпилляции их также можно редактировать в визуальном редакторе среды разработки (здесь полная аналогия с Visuаl Basic). Просто очень много мороки с программами NET, если они сделаны нестандартно.

WYLEK;10209 писал:Судя по коду, ее создали наши узкоглазые братья по разуму

Не угадал, разработчики венгры! biggrin

Последний раз редактировал WYLEK 15:27, 18.03.2017

------------------------------------------
Кто ищет, тот всегда найдет!
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 10 отправлено 23:14, 14.02.2014
WYLEK;10209 писал:Не все программы можно перевести.

Пожалуй эту все-таки можно. Вот что получается:



1) В Radialix'e переводим доступные ресурсы и создаем локализованный файл.
2) Декомпилируем полученный файл.
3) Декомпилируем оригинальный файл.
4) Сравниваем файлы исходных кодов и выясняем, что Radialix все вызовы функций вида

call string '?0?'::'?1?'(string)

заменил на

call '?0?'::'?1?'( [SIGNATURE ENDED PREMATURELY])

По этой причине локализованный файл программы не работает. Поэтому меняем в листинге локализованного кода (в любом блокноте - формат файла текстовый) указанные вызовы функции на оригинальные (команда - заменить все).
6) Восстанавливаем код самой функции '?0?'::'?1?'(string) - Radialix и её испортил. Она находится в конце листинга (просто копируем её код из оригинального листинга).
7) Компилируем обратно локализованный файл.

Все. Так мы одолели только около 20 процентов строк. Все остальные надо выискивать и вписывать прямо в код программы. Когда все будет готово, скомпилировать программу заново.

Но вот терзают меня смутные сомнения по поводу этой функции обработки строк. Может оказаться, что таким образом автор защитил базу данных, которую создает программа. Она строится на соответствии имени поля и соответствующего значения. Если их перевести, то или программа не будет работать или база не будет создаваться, или невозможно будет открыть базу данных, созданную в оригинальной версии программы. Короче надо экспериментировать, точно сказать не могу. Не просто так он все это придумал. А возможно я ошибаюсь.

Последний раз редактировал WYLEK 15:29, 18.03.2017

------------------------------------------
Кто ищет, тот всегда найдет!
Прибывший
  1. Офлайн
  2. Участники
  3. 7 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 11 отправлено 23:14, 14.02.2014
Цитата Leserg ()
Может оказаться, что таким образом автор защитил базу данных, которую создает программа.
Супер!

По поводу базы - вряд ли автор стал так заморачиваться учитывая наличие экспорта/импорта в .csv
Легенда
  1. Офлайн
  2. Админ
  3. 1606 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 12 отправлено 23:14, 14.02.2014
Цитата Leserg ()
Пожалуй эту все-таки можно. Вот что получается:


Лады! Это здорово!
Но, у меня в программе Chasys Draw IES одна и та же строка была по разному переведена в языковом файле и коде - глюк вылез на пол экрана biggrin
Мы не знаем точно задумки автора, и копая так глубоко код, глюк может вылезти в последствии. Но такова наша доля beer
Прибывший
  1. Офлайн
  2. Участники
  3. 7 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 13 отправлено 23:14, 14.02.2014
Цитата WYLEK ()
Но такова наша доля
нет бы авторам сразу делать программу по человечески с вынесенной в отдельный файл локализацией smile
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 14 отправлено 23:20, 14.02.2014
Leserg, круто! А чем ты декомпилируешь? Обязательно ildasm или есть еще какие инструменты?
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 15 отправлено 23:56, 14.02.2014
Nexus;10226 писал:А чем ты декомпилируешь? Обязательно ildasm ...

Декомпилирую и компилирую родными инструментами Microsoft. Это уже проверенный и рабочий вариант, и конечно же он применяется в самом крайнем случае, когда программу не удается перевести в каком-либо шаблонном редакторе.
Nexus;10226 писал:есть еще какие инструменты

Конечно есть и другие инструменты, которые позволяют править код программы без её полной перекомпиляции (по такому принципу работают шаблонные редакторы). Я использую все возможные, которые дают положительный вариант. Универсальных нет. Для одной программы одна сработала отлично, а для другой - другая.
Вот перечень того, что стоит у меня на вооружении:
9Rays Spices .NET Suite
DisSharp
Dotnet IL Editor
DotNet Resolver
GrayWolf
ILSpy
JustDecompile
Red Gate .NET Reflector
Resource .NET
SharpResourcesEditor
Simple Assembly Explorer (SAE)
Zeta Resource Editor

Все они решают одну задачу: дизассемблирование, редактирование ресурсов, правка кода программ NET. Основной инструмент у меня из этого списка Simple Assembly Explorer.

Последний раз редактировал WYLEK 15:30, 18.03.2017

------------------------------------------
Кто ищет, тот всегда найдет!
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 16 отправлено 01:55, 15.02.2014
Leserg, хех, теперь я эту подборочку и себе натаскаю из сети, благодарю wink
Хотя мне до .NET еще ой как далеко, но когда-то доберутся и туда мои шаловливые ручки biggrin Я только вот недавно научился редактировать релоки(relocation) в файлах и таблицу импорта, потому как не во всех файлах есть MultiByteToWideChar, который приходится иногда использовать при патче в отладчике.
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 17 отправлено 18:30, 15.02.2014
Теперь коротко о том, как же редактировать строки. Для этого я использую утилиту Simple Assembly Explorer. Работать придется в ручном режиме. Задача еще осложняется тем, что мы не знаем, о чем говорится в той или иной строке. Также строковыми данными указаны названия объектов и элементов, которые ни в коем случае нельзя трогать, т.к. программа станет неработоспособной. В общем работа над переводом похожа на разминирование.
Итак, строки, использующиеся в программе, загружаются сначала в стек при помощи команды ldstr (назначение всех опокодов сборок NET можно узнать на сайте разработчиков Microsoft). В нормальном приложении строки указаны в явном виде, например:

ldstr "Вы действительно хотите завершить работу с программой?"

В программе Free Address Book строки зашифрованы. Поэтому, после загрузки в стек строка сначала отправляется на расшифровку, т.е. идет вызов необходимой функции, и по возвращению используется по прямому назначению. Вот как это выглядит в коде:



Алгоритм обработки строк - это долгая песня, необходимы хорошие познания в программировании (если есть желание, то можете разбираться). Можно поступить проще: не пускать строку на обработку функцией, т.е. просто занопить команду, а саму строку набрать в явном виде. Вот так:



Таким образом, строка без изменений будет попадать прямо по назначению (в приведенном примере - в заголовок диалога). Еще раз повторю, что нельзя убирать команду вызова функции для всех строк подряд! Нужно внимательно анализировать код и смотреть куда идет строка. Если это имя объекта - переводить нельзя. Если имя элемента - переводить нельзя. Конечно же для этого необходимо хорошо разбираться в структуре программ NET.

Вот такая петрушка. Я поступаю так: нахожу строку, которую можно править, вбиваю 111111111, отключаю команду передачи строки в функцию и сохраняю изменения в файл. Потом запускаю программу и смотрю, где у меня эти 11111111 выплывут. Потом запускаю оригинальную программу и смотрю в ней значение этой строки. Затем возвращаюсь к этой строке в коде и ввожу нормальный перевод. Сохраняю изменения и перехожу к следующей строке. Сами понимаете, что это долго и утомительно. К тому же довольно затруднительно перевести все сообщения программы на те или иные действия пользователя. Для этого их надо все моделировать, а это не всегда бывает возможным.

Последний раз редактировал WYLEK 15:32, 18.03.2017

------------------------------------------
Кто ищет, тот всегда найдет!
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 18 отправлено 01:20, 17.02.2014
Leserg, ну что, как там получается переводить прогу? Не выдержал и тоже залез в прогу через Simple Assembly Explorer (SAE) посмотреть что да как biggrin .
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 19 отправлено 02:13, 17.02.2014
Цитата Nexus ()
Leserg, ну что, как там получается переводить прогу?

Да, уже закончил. Вчерашний и сегодняшний день полностью убил на выуживание строк wacko . Но все-таки программу как бы одолел. Доволен как слон yahoo Правда не все сообщения перевел, т.к. не знаю при каких условиях они будут показаны. Клацал и так, и эдак, но так и не поймал их. Убрал кнопки "Donate" и "Facebook" - не думаю что они нужны нашему человеку, хотя надо спросить у GDragon. Вернуть обратно не проблема. Даже удалось сделать печать отчетов на русском. На неделе еще протестирую. Может где-нибудь найду небольшие базы данных с контактами для глубокого тест-драйва. Если все нормально, выпущу в свет.

Цитата Nexus ()
Не выдержал и тоже залез в прогу через Simple Assembly Explorer (SAE) посмотреть что да как

Ну и как впечатления? Правда же, что ничего сложного?

Цитата gazon01 ()
на главную не забудьте выложить

Нет, на главную ещё рано!


------------------------------------------
Кто ищет, тот всегда найдет!
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 20 отправлено 02:38, 17.02.2014
Цитата Leserg ()
Ну и как впечатления? Правда же, что ничего сложного?

Поcле настоящего Ассемблера это похоже на детский сад - весь код какой-то... детский, легкий что ли wacko Там вообще такое ограниченное количество опкодов что просто жуть. Как вообще программы умудряются работать с таким куцым набором команд?

Да, посмотрел также процедуру шифрования строк - та же хрень, что и в одной китайской программе, которую я тебе год назад показывал, где тоже строки шифровались, помнишь?
Можешь даже взять отсюда алгоритм шифрования на C# и сделать миниутилиту на HiAsm, которая бы на ходу раскодировала шифрованные строки в нормальные, так ты не переводил бы вслепую, а уже бы видел что за строка спрятана wink
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 21 отправлено 02:46, 17.02.2014
Цитата Nexus ()
где тоже строки шифровались, помнишь?

А можешь напомнить?


------------------------------------------
Кто ищет, тот всегда найдет!
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 22 отправлено 02:56, 17.02.2014
Цитата Leserg ()
А можешь напомнить?

Что именно? Какая прога тогда была?

Но там алгоритм немного по другому устроен, но тоже такой ход.
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 23 отправлено 03:06, 17.02.2014
Цитата Nexus ()
Что именно? Какая прога тогда была?

Да не программа, зачем мне программа smile Мне бы на пальцах, что делает этот алгоритм:
Код
// ?0?
public static string ?1?(string ?1?)
{
    int length = ?1?.Length;
    char[] array = new char[length];
    for (int i = 0; i < array.Length; i++)
    {
        char c = ?1?[i];
        byte b = (byte)((int)c ^ length - i);
        byte b2 = (byte)((int)((int)c >> 8) ^ i);
        array[i] = (char)((int)b2 << 8 | b);
    }
    return string.Intern(new string(array));
}

Я только понял, что в цикле обрабатывается каждый символ строки и заносится в массив. Но не могу понять, что с символом делается.


------------------------------------------
Кто ищет, тот всегда найдет!
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 24 отправлено 03:13, 17.02.2014
Цитата Leserg ()
Да не программа, зачем мне программа Мне бы на пальцах, что делает этот алгоритм:

А, тогда прогу удалю.

Цитата Leserg ()
Я только понял, что в цикле обрабатывается каждый символ строки и заносится в массив. Но не могу понять, что с символом делается.

Сам смотрел, в C# я полний ноль, попробуй на форум программеров сгонять по этому языку, пускай они разжуют алгоритм, а там ты уже переведешь на свой лад.
Вот в этой строке byte b = (byte)((int)c ^ length - i); я не понял что за математический знак ^, у меня по математике тройка была biggrin
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 892 сообщений
  4. Репутация: 9
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 25 отправлено 03:29, 17.02.2014
Цитата Nexus ()
попробуй на форум программеров сгонять по этому языку

Да ну их. Задаешь конкретный вопрос, а в ответ получаешь: "А зачем это надо?", "А где это применяется?", "А вы основы программирования читали?" и т.д. Может тут действительно просто, но почему-бы не ответить так и так и вопрос был бы исчерпан.
Цитата Nexus ()
что за математический знак ^

Да это логическое ИСКЛЮЧАЮЩЕЕ ИЛИ. Ладно буду изучать С# smile


------------------------------------------
Кто ищет, тот всегда найдет!
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 26 отправлено 04:50, 17.02.2014
Цитата Leserg ()
Да это логическое ИСКЛЮЧАЮЩЕЕ ИЛИ.

Блин, действительно, это же XOR biggrin Туплю, однако...
Там также есть представление кода на Visual Basic, ты вроде с ним знаком немного.

Ну а если пораскинуть мозгами, то алогоритм дешифровки такой:
1. Вычисляется размер UNICODE строки в символах.
2. Потом создается массив символов в такую же самую длину.
3. Далее запускается цикл обработки байтов от 0 до длины строки, при это изменяется размер переменной цикла на +1.
4. Потом берется первый байт Юникодного символа и XORится с (длина строки - переменная цикла).
5. Берется вротой байт, над ним проводится операция SHR (логический сдвиг вправо на 8 бит), потом результат опять XORится с переменной цикла.
6. Ну и наконец, над этим модифицированным вторым байтом производится SHL - то же что и SHR, но только вправо на 8 бит, потом результат OR с первым модифицированным байтом. Только вот непонятно, это будет то ли символ, то ли только один байт, нужно пробовать варианты.
Если не разберешься, то попробую утилиту сварганить. А может и так, без этой чепухи можно все перевести?
 
Перейти
Найти

Доступ закрыт.

  1. Вам запрещено отвечать в темах данного форума.

Последние темы

  1. Переведенная на русский язык справка...
    Автор: Ruvest 08:25, 17.08.2017
  2. Resource Tuner 2.10 [RU/EN]
    Автор: gazon01 00:04, 15.08.2017
  3. HWiNFO32\64
    Автор: Alecs962 17:18, 14.08.2017
  4. Поговорим?
    Автор: WYLEK 09:41, 14.08.2017
  5. Perfect Photo Suite
    Автор: Vitaly 19:25, 13.08.2017
  6. EaseUS Partition Master...
    Автор: WYLEK 17:59, 12.08.2017

Изменения статуса

  1. Никто не менял личный статус.