информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Легко. 19.11.03 18:12  Число просмотров: 1695
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 19.11.03 18:23  Количество правок: 1
<"чистая" ссылка>
> Еще глядя на сообщение "Font file not found" родилась идея
> - пропатчить файл так, чтобы шрифт грузился из внешнего

В екзешку, обычно, цепляется весь модуль (все функции и статические данные объектного модуля).
Сообщение, типа, "файл не найден" относится к функциям типа "LOadBGIFONT" или "LoadBGIDriver", которые могут быть в одним модуле с функцией "RegisterBGIDriver" или "RegisterBGIFONT".
Реально в программе зовется функция регистрации прилинкованного шрифта с соответствующими параметрами. Нужно же звать другую функцию с другим списком/количеством параметров, которая может быть вовсе не прилинкована (не находится в прилинкованом модуле, а просто отсутствовать в екзешке).
Что-то мы тут не о том, может человек ни С ни паскаля не знает. Я уж не говорю про структуру екзешки.

> файла. Но тут не обойтись без знания Ассемблера.

И без головы и некоторых навыков.
А тут понимаш ли у человека трудности с закидыванием одного файла в середину другого.
Знатоки Ассемблера, вспомните как Вы осваивали регистры, переменные, инструкции, адреса, сегменты, слово состояние процессора, прерывания, стэк, отсутствие условного оператора и оператора цикла, отсутствие оператора ввода/вывода. Тяжеловато, после БЭЙСИКа.

Научу Ассемблеру за пару часов:)

Хочется тут 5 симфонию Моцарта сбацать - кто-нибудь, скажите на какие клавиши на рояле нажимать:)

Не подумайте, что хочу обидеть кого-то. Просто на своем кривом языке хочу показать, что бессмысленно браться за решение задач, которые требуют намного бОльших знаний и навыков, чем обладает автор запроса. Сколько дней ушло на разборку причины непечатания русских букв. А ведь человека надо научить как екзешку поправить, чтоб в ней другая функция где-то вызывалась. Ассемблеру, видимо тоже научить придется. И все это в нескольких постингах. Тупиковая ситуация получается.
<beginners>
Некорректные символы в DOS 11.11.03 15:17  
Автор: 2ts Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Проблема вот в чем: русский ввод с клавиатуры я настроил, русские символы на екране отображаются (в программе edit). Но другая программа, которая читает из моего текстового файла свое меню, отображает русские символы абракадаброй :( Чё делать? Помогите!
Некорректные символы в DOS 18.11.03 03:39  
Автор: PaulGor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Проблема вот в чем: русский ввод с клавиатуры я настроил,
> русские символы на екране отображаются (в программе edit).
> Но другая программа, которая читает из моего текстового
> файла свое меню, отображает русские символы абракадаброй :(
> Чё делать? Помогите!

Ну так что, скажешь всё-таки что за версия Windows у тебя? :)
Тогда может сможем помочь...

Штучки типа замены в Registry 1252 на 1251 - они ведь для приложений Windows, ДОСовская программа на них внимания не обращает, решение другое должно быть - но надо знать, что у тяб за версия Windows -
95? ME? 2000?

2ts 18.11.03 10:51  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Ну так что, скажешь всё-таки что за версия Windows у тебя?
> :)
> Тогда может сможем помочь...

Предлагаю попробовать запустить программу под чистым ДОСом и с русификатором. Если результат будет аналогичный, то версию ДОСа или Виндовса можно и не сообщать, поскольку будет понятно, что локализация Виндовса тут не причем.

> Штучки типа замены в Registry 1252 на 1251 - они ведь для
> приложений Windows, ДОСовская программа на них внимания не
> обращает, решение другое должно быть - но надо знать, что у
> тяб за версия Windows -
> 95? ME? 2000?
>
Моя винда :) Прога отображает кириллицу, НО... 19.11.03 12:39  
Автор: 2ts Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Винда у меня 98SE английская версия. Но это здесь совершенно ни при чём :) В прогу точно встроен собственный шрифт (она написана на С или на С++, и в теле екзешника есть строка "BGI Stroked Font V1.1 Feb 5, 2000", а также "Font file not found"). Есть возможность вместо встроенного шрифта использовать шрифт из знакогенератора. Что я и сделал (путем объявления в текстовом файле меню названия шрифта BOLD - тогда прога отображает кириллицу). Но результат, мягко говоря, не впечатляет - шрифт маленький, без возможности масштабирования, и некоторые меню настолько становятся широки, что уезжают за края екрана :( Теперь проблема звучит так: где в проге зашиты шрифты и как их заменить на кирилличесие?
Легко. 19.11.03 13:02  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 19.11.03 13:03  Количество правок: 1
<"чистая" ссылка>
> Винда у меня 98SE английская версия. Но это здесь
> совершенно ни при чём :) В прогу точно встроен собственный
> шрифт (она написана на С или на С++, и в теле екзешника
> есть строка "BGI Stroked Font V1.1 Feb 5, 2000", а также
> "Font file not found"). Есть возможность вместо
> встроенного шрифта использовать шрифт из знакогенератора.
> Что я и сделал (путем объявления в текстовом файле меню
> названия шрифта BOLD - тогда прога отображает кириллицу).
> Но результат, мягко говоря, не впечатляет - шрифт
> маленький, без возможности масштабирования, и некоторые
> меню настолько становятся широки, что уезжают за края
> екрана :( Теперь проблема звучит так: где в проге зашиты
> шрифты и как их заменить на кирилличесие?

В смысле заменить. Проблема - найти.
Еще одно "но": размер файла шрифта должен быть меньше, чем тот, что встроен.
А дальше каким-нибудь дисковым редактором вставить новый начиная с того места, где начинается старый. На "хвост" можно не обращать внимания.
Найти то место, с которого начинается старый, тоже легко. Нужно исследовать начало файла с какими-нибудь шрифтами. Там, в начале, обычно заголовок-описатель идет. При прикомпилировании шрифта, он должен лежать в екзешки без изменений.
Легко. 19.11.03 13:23  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
Русские BGI-шрифты можно легко найти в поисковиках.
Тут лежит даже редактор BGI-шрифтов.
http://alexartwww.narod.ru/pcpascal.htm

Еще глядя на сообщение "Font file not found" родилась идея - пропатчить файл так, чтобы шрифт грузился из внешнего файла. Но тут не обойтись без знания Ассемблера.
Легко. 19.11.03 18:12  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 19.11.03 18:23  Количество правок: 1
<"чистая" ссылка>
> Еще глядя на сообщение "Font file not found" родилась идея
> - пропатчить файл так, чтобы шрифт грузился из внешнего

В екзешку, обычно, цепляется весь модуль (все функции и статические данные объектного модуля).
Сообщение, типа, "файл не найден" относится к функциям типа "LOadBGIFONT" или "LoadBGIDriver", которые могут быть в одним модуле с функцией "RegisterBGIDriver" или "RegisterBGIFONT".
Реально в программе зовется функция регистрации прилинкованного шрифта с соответствующими параметрами. Нужно же звать другую функцию с другим списком/количеством параметров, которая может быть вовсе не прилинкована (не находится в прилинкованом модуле, а просто отсутствовать в екзешке).
Что-то мы тут не о том, может человек ни С ни паскаля не знает. Я уж не говорю про структуру екзешки.

> файла. Но тут не обойтись без знания Ассемблера.

И без головы и некоторых навыков.
А тут понимаш ли у человека трудности с закидыванием одного файла в середину другого.
Знатоки Ассемблера, вспомните как Вы осваивали регистры, переменные, инструкции, адреса, сегменты, слово состояние процессора, прерывания, стэк, отсутствие условного оператора и оператора цикла, отсутствие оператора ввода/вывода. Тяжеловато, после БЭЙСИКа.

Научу Ассемблеру за пару часов:)

Хочется тут 5 симфонию Моцарта сбацать - кто-нибудь, скажите на какие клавиши на рояле нажимать:)

Не подумайте, что хочу обидеть кого-то. Просто на своем кривом языке хочу показать, что бессмысленно браться за решение задач, которые требуют намного бОльших знаний и навыков, чем обладает автор запроса. Сколько дней ушло на разборку причины непечатания русских букв. А ведь человека надо научить как екзешку поправить, чтоб в ней другая функция где-то вызывалась. Ассемблеру, видимо тоже научить придется. И все это в нескольких постингах. Тупиковая ситуация получается.
Легко. 19.11.03 21:12  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 19.11.03 21:14  Количество правок: 1
<"чистая" ссылка>
Да нет, патч там элементарный jmp - 2-3 байта.
В программке шрифт выбирается вызовом функции SetTextStyle.
А эта функция сама загружает шрифт из соответствующего файла .chr, если ранее этот шрифт не был загружен в память или зарегистрирован с помощью RegisterBGIFont.
Т.е. нужно всего лишь обойти вызов функции RegisterBGIFont.
И тогда, когда будет вызвана SetTextStyle, она автоматически загрузит
шрифт из соответствующего файла .chr

Другой вариант патча - поменять номер шрифта, передаваемый в качестве параметра (тип int) функции SetTextStyle.
Блин, сейчас только допер... ведь если прога корректно транслирует символические имена шрифтов (которые указываются в конфиге программы) в номер шрифта, который передается функции SetTextStyle, что можно обойтись без патча!
Ведь почему появилась кириллица, когда он указал в конфиге шрифт BOLD?
Может быть потому, что этот шрифт не встроен в программу, а SetTextStyle не смогла загрузить шрифт из файла bold.chr и шрифт остался таким, каким он был после инициализации графического режима (растровый шрифт из знакогенератора).
А если бы bold.chr был, то наверное он бы загрузился!!!

2ts: положи русский bold.chr в директорию программы,
укажи в конфиге BOLD и сообщи о результатах =)

>
> Научу Ассемблеру за пару часов:)
>
> Хочется тут 5 симфонию Моцарта сбацать - кто-нибудь,
> скажите на какие клавиши на рояле нажимать:)

Неужто не научим как 2-3 байта пропатчить? =))
Легко. 20.11.03 01:45  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 20.11.03 01:52  Количество правок: 2
<"чистая" ссылка>
> Неужто не научим как 2-3 байта пропатчить? =))
Можно попробовать Ж)
Все что я написал ниже моет сработать только если повезет и программа юзает стандартные функции bios'а для хранения шрифтов и вывода текста. Если она рисует своими тогда труднее. Итак программа загружает свой шрифт. А зачем ей это делать если у нас в системе имеются все нужные шрифты? Правильно незачем.
Глянул тут хелп по int 10h
Шрифты могут загружаться через
mov ax, 1100h
....
....
int 10h

или

mov ax, 1110h
....
....
int 10h

(Кто нить расскажет чем они различаются?)
итого надо найти в ехешнике mov ax, 1100h или mov ax, 1110h через несколько байт которого стоит int 10h и поменять int 10h на 2 nop'а
mov ax, 1100h='B8 00 11'
mov ax, 1110h='B8 10 11'
int 10h ='CD 10'
nop = 90
так вот надо найти в hex'овом виде файла где рядом находяться 'B8 00 11' с 'CD 10' или 'B8 10 11' с 'CD 10' и заменить 'CD 10' на '90 90'

Не забудь сделать рез. копию. Интересно что из этого получится Ж)
Легко. 20.11.03 10:15  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Все что я написал ниже моет сработать только если повезет и
> программа юзает стандартные функции bios'а для хранения
> шрифтов и вывода текста. Если она рисует своими тогда

Раз уж там BGI, то рисует естественно. Однако может и знакогенератором пользоваться, раз уж при отсутствии прикомпилированного шрифта она по русски пишет (а он загружается русификатором при включении графического режима как раз десятым прерыванием, одиннадцатой функцией).

> труднее. Итак программа загружает свой шрифт. А зачем ей

Не грузит. Загрузить можно только 8х8, 8х14 и 8х16. А при выводе, вообще, только один будет использоваться.

> (Кто нить расскажет чем они различаются?)

При описании последней упоминается про текстовый режим.

> Не забудь сделать рез. копию. Интересно что из этого
> получится Ж)

Не пройдет такой номер, мне кажется.
Легко. 20.11.03 10:07  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 20.11.03 10:11  Количество правок: 1
<"чистая" ссылка>
Ну все, щас окончательно запутаем человека.
2ts: то, что предложил Killer{R}, делать не нужно :)
Прога использует векторные BGI-шрифты, а функции BIOS работают.только с растровыми шрифтами.

Методика патча следующая:

Загрузить файл в IDA и найти вызов функции RegisterBGIFont.
Это будет выглядеть примерно так:

push <addr>
call _RegisterBGIFont ; ф-я принимает один параметр - адрес BGI-шрифта

нам нужно сделать, чтобы эта функция не выполнялась.
правим push на jmp:

jmp _next
call _RegisterBGIFont
_next:

Все.
Если нет IDA, то найти RegisterBGIFont можно по ее сигнатуре (первым байтам).
Не так уж легко... 19.11.03 13:32  
Автор: 2ts Статус: Незарегистрированный пользователь
<"чистая" ссылка>
К сожалению, Ассемблера я не знаю :( Допустим, я нашел хороший русский шрифт (может кто знает, какого размера должен быть файл). А дальше то че с ним делать? Как его встраивать? В этом вопросе я полный чайник :( Научите, pls!!!
Не так уж легко... 19.11.03 18:40  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 19.11.03 18:42  Количество правок: 1
<"чистая" ссылка>
> К сожалению, Ассемблера я не знаю :( Допустим, я нашел
> хороший русский шрифт (может кто знает, какого размера
> должен быть файл). А дальше то че с ним делать? Как его
пару десятков килобайт, а, может, больше. Все от гарнитур зависит.
> встраивать? В этом вопросе я полный чайник :( Научите,
> pls!!!

Нужно любым средством просмотра файлов посмотреть в начало файлов со шрифтами. Если с самого начала идет сигнатура (типа "BGI FONT (C) BORLAND INT.") - хорошо. Если нет, - считаем смещение до сигнатуры от начала файла - пригодится. Исследуем дальше заголовки с целью найти в них длину файла или как ее вычислить. Ищем (используя просмотровщик содержимого файлов) в екзешке все сигнатуры BGI-шрифтов. Если одна - хорошо, иначе работаем со всеми. Сравниваем размеры шрифтов. Для просмотра и редактирования очень удобно пользоваться дисковым редактором из Нортоновских утилит. В меню "EDIT" или "ПРАВКА" будут подпункты "отметить" ("mark"), "копировать", "вставить". Отметить фрагмент с позиции курсора. Перед вставкой его следует встать в нужную позицию целевого файла. Полезно пользоваться пунктом меню "инструменты" - там есть полезные подпункты "заполнить выделенный фрагмент чем-то", "сохранить его в файл/сектор на диске", "вставить из файла", "распечатать".
Удачи.
Некорректные символы в DOS 13.11.03 23:03  
Автор: PaulGor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Проблема вот в чем: русский ввод с клавиатуры я настроил,
> русские символы на екране отображаются (в программе edit).
> Но другая программа, которая читает из моего текстового
> файла свое меню, отображает русские символы абракадаброй :(
> Чё делать? Помогите!

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

Вот если бы ты ещё версию Windows указал, и русская ли Windows, а если нет, то русифицирована ли насистемномуровне
(что легко проверить, выдав в DOSе команду
chcp
должна 866 показывать).


С другой стороны, причем здесь винда? 14.11.03 13:32  
Автор: 2ts Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Ведь речь идет о графическом режиме DOS!
А какая кстати винда? 15.11.03 01:37  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Если NT/2k/XP то keyrus.com надо прописать в system32\autoexec.nt
А какая кстати винда? 19.11.03 12:42  
Автор: 2ts Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо, на будущее буду знать, но у меня 98SE ENG.
Винда английская, но... 14.11.03 13:22  
Автор: 2ts Статус: Незарегистрированный пользователь
<"чистая" ссылка>
путем установки русских шрифтов, изменения в свойствах екрана всех возможных шрифтов отображения меню, названий файлов и т.д. на кирилические, а также правок реестра ( значения параметров 1250 и 1252 заменены на cp_1251.nls ключ HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\NLS\CODEPAGE - кстати, это спасает в Фотошопе от абракадабры) отображение символов в Винде корректное, но при попытке изменить имя файла оно начинает отображаться аброкадаброй :( И еще... При выходе из Far1.7 после надписи FAR Group в следующей строке идут непонятные закарлючки, а так не должно быть! А на команду chcp выдается 437 (штаты) :(
Какие значения acp и oemcp в указанном тобой ключе? 14.11.03 20:58  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
В Regional settings региональный стандарт Russian??? 14.11.03 20:51  
Автор: Den <Denis> Статус: The Elderman
Отредактировано 14.11.03 20:56  Количество правок: 1
<"чистая" ссылка>
1  |  2  |  3 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach