IPB

Добро пожаловать, гость ( Вход | Регистрация )

История благодарностей участнику -=CHE@TER=- ::: Спасибо сказали: 286 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
Dec 31 2013, 11:07 С наступающим Новым годом!
Пожалуйста, прочитайте ежегодное Новогоднее Обращение к участникам, форумчанам и гостям проекта CTPAX-X! (*улыбается*)

Итак, год 2013, год змеи, уползает не выдержав топота копыт надвигающегося года лошади.
Кое-кого из нас, змея основательно так покусала, так что год выдался достаточно богатым на неприятности. И хотя змея считается символом мудрости, но злые шутки здесь играло число 13 в номере года. Так что есть ненулевая вероятность (что уже само по себе хорошо (*улыбается*)), что в следующем году нам всем повезёт гораздо больше.

Как бы там ни было, хочется пожелать всем встретить и провести Новый Год в хорошей компании родных, близких, друзей и приятелей, не болеть, не грустить, а, главное, не терять присутствия духа, какие бы каверзные проблемы вам не подкидывала судьба!

От себя лично хочу добавить, что мне было исключительно приятно провести этот год среди таких замечательных товарищей как вы друзья!
Всем вместе и каждому в отдельности крепко жму руку и ещё раз поздравляю!

С Наступающим всех!
Axsis, Siberian GRemlin, useretail,
Dec 30 2013, 13:00 Жёсткий диск
Я хотел написать отдельную статью, когда всё закончится и я буду знать результаты, чтобы либо критиковать, либо похвалить, но раз такое дело...

Добавлено: диск восстановить не смогли, к тому же ещё и протянули время (см. ниже окончательный отзыв).

Короче, пару месяцев назад у меня рухнул жёсткий диск. Обратился в самую известную в нашем городе (живу, к слову, не в мухосранске - город большой) фирму по восстановлению жёстких дисков. Диск у меня, вообще, пропал из системы и виден не был. В фирме диск вскрыли, сказали, что там царапина на поверхности, так что они ничего сделать не могут. Я, думаю, не нужно говорить, что в рекламе они сообщали что ремонтируют ЛЮБЫЕ повреждения на дисках. Начал искать другие фирмы в нашем городе - они либо не брались, а те что взялись, сказали, что раз диск уже вскрывали, то цена за ремонт будет минимум X тысяч рублей и ничего гарантировать они не могут, от чего у меня аж глаза на лоб полезли.

Начал искать в Интернете кто может восстановить хоть что-то.
Вылетел на какую-то статью на сайте http://www.hardmaster.info/
Зачитался и в конечном счёте, решил отправить диск туда. Оплатил предварительный осмотр (нужно было оплатить диск-донор и работу - 4 + 2 тыс.руб., хочу заметить, что могло быть и меньше, но так как диск вскрывали - в общем, читайте правила на их сайте...) - поставили в очередь, сказали, что к концу января будет известно можно ли что-то восстановить с диска (можно и раньше, но за дополнительные деньги, а мне не к спеху). Мне, кстати, из фирмы написали, что на моём диске не только головки отогнуты как попало, там ещё и отпечатки пальцев на поверхности (!) дисков. В общем, у меня, походу, вот такой случай, разве что крышка от диска целая была после вскрытия...

Товарищ Siberian GRemlin, тебе вот эта статья будет интересна, так как ты, возможно (я не знаю точной причины твоей поломки), занимаешься сейчас тем же самым (считыванием, когда этого делать нельзя).

Я хочу закончить мысль по поводу этой фирмы, а дальше пусть уже каждый сам решает стоит ли туда диск отправлять.
Почему я решил отослать диск в эту фирму - мне понравились статьи. Они написаны специалистом. Например вот эта. Обратите внимание - там куча всякой технической информации (типа "Rst 0x08M"), которая неподготовленному человеку вообще ни о чём не говорит, но именно уход от простого объяснения на пальцах (для обычных клиентов, которые просто хотят починить диск и ни в чём не разбираются) в сторону технических подробностей говорит о том, что статью писал специалист, а не пиар-манагер цель которого написать красиво и складно, чтобы привлечь клиентов. Т.е. человек пишет именно о том, в чём он разбирается и понимает. А ещё это в некоторой степени говорит об увлечённости предметом. Просто я не так давно тоже начал писать технические статьи (кое-что и тут на форуме видно) и у меня такая же проблема - ухожу в технические детали, которые кроме специалистов никому неинтересны и непонятны.
К слову из забавных статей, которые я нашёл на том сайте. Вообще, сайт интересный - рекомендую к прочтению.

Итого - я высказал свои мысли, а уже решает пусть каждый сам за себя.
И, ещё раз повторюсь, какие-то результаты (хорошие или плохие), а также окончательный отзыв о фирме я смогу сообщить только в конце января или даже позже.
Grom PE, Siberian GRemlin,
Dec 23 2013, 18:31 Spacebase DF9
Походу это LuaJIT:
_ttp://luajit.org
Гугли "LuaJIT decompiler" или что-нибудь этакое.
Нашёл вот это, но не пробовал:
_ttp://github.com/bobsayshilol/luajit-decomp
Siberian GRemlin,
Dec 16 2013, 20:40 Spacebase DF9
Скачать бесплатно, без регистрации и SMS: stex2dds.zip
Насчёт ширины/высоты (width/height) не уверен, потому что они там одинаковые (в .DDS просто сначала высота идёт, а уже потом ширина).
dwName - имена людей (ANNA и т.п. - они разные), ну и ещё там пара полей фиг знает за что отвечающих.
P.S. Как идут дела с первой Кирандией? Да, я такой. (*улыбается*)
Siberian GRemlin,
Nov 27 2013, 15:42 Delphi, Asm, C, WinAPI, PHP, ...
Недавно я тут писал про утилиту COMPRESS.EXE, сжимающую файлы.
Конечно, сжатие весьма посредственное (мы сейчас рассматриваем классический алгоритм LZSS, а не MS-ZIP, который туда добавили позже) и хорошо жмёт только файлы где есть длинные последовательности из повторяющихся байт, но в общем и целом для некоторых вещей вполне себе подойдёт. Тут главный плюс в том, что распаковщик короткий, легко пишется и не требует дополнительной памяти (ну 4 Кб на циклический буфер - это крохи). Так что можно использовать этот архиватор и созданные им файлы для своих нужд.
Но, для начала, давайте взглянем на то, как сжатые файлы создаются.

Итак, делаем:
COMPRESS.EXE FILENAME.EXT FILENAME.EX_

Что происходит после выполнения этой команды?

1) Создаётся файл FILENAME.EX_

2) Туда пишется следующий заголовок:
CODE
CHAR[8] - signature "SZDD\x88\xF0\x27\x33"
CHAR - compression algo type - always 'A' (0x41)
CHAR - last char of uncompressed file name (example: "test.xyz" -> 'z'); may be null
DWORD - unpacked file size

Итого, заголовок у нас занимает 14 байт.
Отдельно хочу сделать замечание по поводу поля "algo type" (алгоритм сжатия). Если кто-то видел в Интернете исходные коды Windows 2000, то там можно было увидеть такое:
CODE
#define ALG_FIRST ((BYTE) 'A') // first version algorithm label for Lempel-Ziv
#define ALG_LZ    ((BYTE) 'B') // new Lempel-Ziv algorithm label
#define ALG_LZA   ((BYTE) 'C') // Lempel-Ziv with arithmetic encoding algorithm label

Однако, сразу после этого шёл define объявлявший валидным только первый алгоритм. Так что на практике первые два поля в заголовке архива - константы и можно смело проверять даже не 8, а первые 9 байт.
Поле "last char" утилитой EXPAND.EXE тоже не используется, а COMPRESS.EXE пишет туда ноль (или я так и не понял, как сделать, чтобы оно работало). Так что его можно игнорировать, если, конечно, вы сами не создавали архив и сами же его не распаковываете (точно зная, что поле не пустое).
Далее идёт размер распакованного файла и всё. Хочу обратить на это внимание - в архиве нигде не содержится размер сжатых данных - файл читается, пока размер распакованного буфера не достигнет размера распакованного файла из заголовка.

3) В файл пишется упакованное содержимое.

4) Файлу-архиву ставится дата исходного файла - таким "оригинальным образом" в Microsoft сохраняют дату создания файла. Поясню: при распаковке извлечённому файлу выставляется (восстанавливается) дата с файла-архива.

Ну вот, теперь мы знаем как это работает и устроено, так что можем делать архивы, линковать в ресурсы к своим программам и "на лету" распаковывать. Вот небольшой код на Delphi делающий распаковку (я переписал его с Си - см. ссылку).
Вызывать так: MSLZSSExpandBuff(PackedBuffer, UnpackedBuffer, PackedBufferSize, UnpackedBufferSize);

CODE
{ ported from: http://gnuwin32.sourceforge.net/packages/mscompress.htm }

Function MSLZSSGetByte(Var P: Pointer; Var Ps: DWORD): Integer;
Begin
  If Ps > 0 Then
  Begin
    result:=Byte(P^);
    Ps:=Ps - 1;
    Inc(DWORD(P));
  End
  Else result:=-1;
End;

Function MSLZSSPutByte(Var U: Pointer; Var Us: DWORD; B: Byte): Boolean;
Begin
  result:=(Us > 0);
  If result Then
  Begin
    Byte(U^):=B;
    Us:=Us - 1;
    Inc(DWORD(U));
  End;
End;

Procedure MSLZSSExpandBuff(P, U: Pointer; Ps, Us: DWORD);
Var
  I, J, Len, M, B: Integer;
             Buff: Array[0..$FFF] Of Byte;
Begin
  FillChar(buff[0], $FFF + 1, 32);
  I:=($FFF + 1) - 16;
  While ((Ps > 0) And (Us > 0)) Do
  Begin
    B:=MSLZSSGetByte(P, Ps);
    If B = -1 Then Break;
    For M:=0 To 7 Do
    Begin
      If (B And 1) = 0 Then
      Begin
        J:=MSLZSSGetByte(P, Ps);
        If J = -1 Then Break;
        Len:=MSLZSSGetByte(P, Ps);
        If Len = -1 Then Break;
        J:=J + ((Len And $F0) ShL 4);
        Len:=(Len And $0F) + 3;
        While Len > 0 Do
        Begin
          Buff[I]:=Buff[J];
          If MSLZSSPutByte(U, Us, Buff[I]) = False Then Break;
          J:=(J + 1) And $FFF;
          I:=(I + 1) And $FFF;
          Len:=Len - 1;
        End;
      End
      Else
      Begin
        J:=MSLZSSGetByte(P, Ps);
        If J = -1 Then Break;
        Buff[I]:=J;
        If MSLZSSPutByte(U, Us, Buff[I]) = False Then Break;
        I:=(I + 1) And $FFF;
      End;
      B:=B ShR 1;
    End; // For
  End; // While
End;
Siberian GRemlin,
Nov 17 2013, 11:03 Software patches
Многие знают, что ещё со времён MS-DOS есть такая утилита как EXPAND.EXE, которая распаковывает установочные файлы "FILENAME.EX_" во что-нибудь типа "FILENAME.EXT". Упаковка осуществляется программой COMPRESS.EXE. У меня была эта программа, но для DOS. Понадобился этот упаковщик и решил скачать версию для Windows, чтобы работала нормально под любым Windows (в том числе и x64, где DOS не эмулируется никак).
Программа COMPRESS.EXE любезно предоставленна фирмой Microsoft и входит в комплект Windows Server 2003 Resource Kit Tools.
Однако, выяснилось, что упакованные ей файлы не хотят распаковываться через EXPAND.EXE.
Офигев от такой нагласти упаковал тот же файл DOS-версией программы (её архивы успешно распаковывались) и сравнил результат.
Оба файла оказались идентичны, за исключением поля отвечающего за размер распакованного файла.
В оригинале файл занимал 2990 байт (0BAEh).
В нормальном архиве так и было записано:
AE 0B 00 00
В ненормально же было так:
01 AE 0B 00
Возникает резонный вопрос: WTF???
Полез в отладчик и нашёл такой удивительный код:
CODE
.text:010018F8 mov  al, [ecx+0Ah]; put last extension char to al (null)
.text:010018FB mov  [ebp-0Bh], al; put char to header buffer
;-------------
.text:010018FE inc  al              ; where the WTF??? started - increment last char
.text:01001900 mov  [ebp-0Ah], al; put as first byte for unpacked buffer in header
.text:01001903 mov  eax, [ecx+0Ch]  ; move actual unpacked size to eax
;-------------
.text:01001906 xor  esi, esi
.text:01001908 xor  edi, edi
.text:0100190A @loc_100190A:        ; put unpacked size to the header buffer
.text:0100190A mov  ecx, edi        ; why so difficult?
.text:0100190C mov  edx, eax        ; by the way - this code NOT SAFE!
.text:0100190E shr  edx, cl         ; because it writes 4 bytes to buffer
.text:01001910 add  edi, 8          ; but we already use one (see above)
.text:01001913 inc  esi             ; so the last byte makes BUFFER OVERFLOW!
.text:01001914 cmp  edi, 20h
.text:01001917 mov  [ebp+esi-0Ah], dl; here we can fix this error: -0Ah to -0Bh
.text:0100191B jl   short loc_100190A

Мало того, что в выходной буфер за каким-то чёртом пишется последний символ расширения файла увеличенный на единицу, так туда же ещё и пытается записаться размер (4 байта), причём после этого самого непонятного байта, что приводит к переполнению буфера!

Как видно из комментариев выше, сиё безобразие несложно поправить исправлением всего 1 байта.

compress.exe
00000D1A: F6 -> F5

; version info:
; 39936 bytes
; 2003.04.18 17:46:26
; 5.2.3790.0 built by: dnsrv_dev(v-smgum)

Так как esi при первом шаге цикла уже 1 (inc esi), то нужно как-то это компенсировать, вот и отнимаем больше на 1: вместо -0Ah используем -0Bh (см. комментарии выше).
Что, в итоге, позволяет нам не только избежать переполнения буфера, а также записать размер правильно, но и перезаписать тот непонятный байт.
В общем, после сего исправления эту утилиту, наконец-то, можно использовать.
useretail,
Nov 1 2013, 18:16 OllyDbg v1.10 CommandBar v3.20.110 plugin
OllyDbg v1.10 CommandBar v3.20.110 plugin CXP update
© CTPAX-X Team 2013
Based on source codes from: http://tuts4you.com/download.php?view.3405

QUOTE
[CXP:20131101]
- autoclose "Intermodular calls" window after "BPX" command and restore size of the current MDI window only if active window is maximized
- add messages for "BPX" command:
"! Specified name not found or invalid" - if breakpoint set/remove operation failed
"+ Breakpoint is set" - if breakpoint set operation successful
"- Breakpoint removed" - if breakpoint remove operation successful
- add menu item "2 Set focus to CommandBar\tCtrl+D|" (this hot key was undocumented anywhere else)
- Ctrl+D in the CommandBar combobox returns focus back to the active MDI window (if any)
- replace "sprintf()" from LIBC with "wsprintf()" from WinAPI - smaller binary file (42 kb)
- fix compiler warnings
- compiled with MS Visual C++ 6.0 (new recompiled "Ollydbg.lib" file)

Download: cmdbarcx.zip

Кто пользовался плагином - всё поймёт.
Перед установкой необходимо убрать файлы "CmdBar.dll" / "CmdLine.dll" из каталога с плагинами у Ольки.
Какие-нибудь ещё пожелания есть? Что-нибудь добавить? Хех, только не сильно навороченное.
Siberian GRemlin,
Sep 14 2013, 14:32 Delphi, Asm, C, WinAPI, PHP, ...
Часто пишу программы, которые со временем довольно сильно меняются.
Ставить на свою машину SVN, GIT или другие репозитории не хочу, да и задачи не такие глобальные.
Так что сделал себе вот такой вот файлик.

backup.bat
CODE
@echo off
del "%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.zip" >nul 2>&1
cd ..
zip.exe -9 -X -D "%~d0%~p0%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.zip" "*.*" -x "*.dcu" -x "*.bak"
cd /d "%~d0%~p0"

1) Файл должен находиться в "%КАТАЛОГ_ПРОЕКТА%\backup\", где вместо backup может быть каталог с любым другим именем.
2) Ключ "-x" позволяет исключить ненужные файлы.
3) Нельзя писать "..\*.*" для указания маски файлов для упаковки, потому что это чревато тем, что в архив файлы с таким именем и будут сложены: "..\Project1.dpr" - что при распаковке вывалит их на каталог выше чем надо.
4) Ключ -D отключает обработку каталогов (чтобы самого себя не запаковать).
5) "-9" - максимальное сжатие.
6) "-X" - отключает всякую ненужную информацию, которая только раздувает размер архива.
7) "%DATE:~-4%%DATE:~3,2%%DATE:~0,2%" превратится в текущую дату: "20130914" (запускаем и делаем копию за сегодня).
8) "%~d0%~p0" - каталог, откуда был запущен .BAT файл.
9) Бесплатный "zip.exe" брал тут: Info-ZIP, распаковать и поместить в %PATH% (например, в C:\WINDOWS\). Прошу обратить внимание, что в этой программе ключи регистрочуствительные, так что -d и -D, а также -x и -X - это разные ключи!
Siberian GRemlin,
Jun 28 2013, 11:09 Delphi, Asm, C, WinAPI, PHP, ...
Мне не так давно было ещё одно откровение, которым спешу поделиться.
Представьте, что у нас есть вот такой код в какой-то программе, которую мы хотим изменить:

CODE
.00401581: 7513  jne   .000401596

Как известно jump'ы правят двумя способами:
1) Когда надо переходить, то меняем 0x7? на 0xEB.
2) Когда НЕ надо переходить, то заменяем оба байта на 0x90.
Но я всегда стараюсь сократить количество изменяемых байт, чтобы проще было исправлять, да и самому не путаться.
В первом случае, как можно заметить, мы меняем 1 байт, а во втором 2.
Хотелось бы сократить издержки производства, но как это сделать?
Оказывается достаточно просто - нужно всего лишь заменить второй байт (смещение для прыжка прибавляемое к адресу после команды jump) на 00, вот так:

CODE
.00401581: 7500  jne   .000401583

Куда будет переходить такой прыжок?
Правильно, на следующую после jump'а инструкцию.
Изменяется всего один байт - очень аккуратно, компактно и элегантно.
Siberian GRemlin,
Jun 27 2013, 14:59 STUNS - STupid UNcompreSsor
Опять, блин, вылез баг с puff (deflate/zlib) - обновил с 2.2 до 2.3 (последняя - за апрель 2013), теперь всё ок.
Архив обновлён (версию не менял), лежит там же.
Приношу всем извинения.
Axsis, Siberian GRemlin,
Jun 1 2013, 15:00 STUNS - STupid UNcompreSsor
Собрал новую версию.

[codebox]STUNS v1.1
© CTPAX-X Team 2013-2018, Andrew Frolov aka FAL 2004
http://www.CTPAX-X.org/

v1.1 [2018.03.26]
o UCL/NRV compression (ucl2b and ucl2d) returned back
o single file name replaced from "UNPACKED.###" to one specified with the -out option
o fixed typo ("is specified" -> "if specified")
o change help text so it will fit into 80x25 screen

v1.0 [2017.11.30]
o completely dropped old STUNS v0.x codebase
o GCC 3.2 with hacks instead of MSVC 6.0 - smaller executable size
o updated puff and blast from latest zlib sources
o dropped UCL/NRV compression (ucl2b and ucl2d) as rarely used
o changed output text: offset (hex), size (dec), algo, info
o new option to merge all output to a single file
o new option to view matched compressions and don't save anything

v0.5 [2016.08.17]
o minilzo: updated from v1.08 (2002) to v2.09 (2015) (fixes rare crash)
o UCL: just in case updated too from v0.92 (2000) to v1.02 (2003)
(new variants of compression formats like NRV2E and NRV2E-99 not included)

v0.4 [2016.06.26]
o Allow to set the scanning start offset for the input file (in hex)
o Allow to stop after a certain number of unpacked files has been reached
o Now if one or more compression algorithms are specified without the "-"
at the end, they will be the only ones used for unpacking

v0.3 [2014.03.31]
o PKWare: fixed a crash in output buffer overrun
o Deflate and PKWare: flag exhausted output buffer as normally unpacked (see the next note),
other libraries already work this way
o Output buffer won't be saved to disk if it reaches the end of an output memory block,
because this usually indicates an invalid input stream, so now instead of saving data
you'll get a warning message like this one:
> PKWare: Failed! Output buffer 256 Mb exhausted at: 0 (0x0)
if you still want to save these files, try to increase the memory block size
or you can disable mentioned compression library (if you don't need it)
to speed up the unpacking process
o Fixed typo in the usage text ("addind" -> "adding")

v0.2 [2013.06.01]
o Updated zlib modules:
- puff (Deflate) updated to v2.3
- blast (PKWare) replace "blast.c" with original
o Temporary file "$$$tmp$$$.$$$" replaced with output memory block
o Allow to change output memory block size from command line
o Allow to skip creation for files less than specified size from command line
o Change output file names from "%04x" to "%08X"
o Some tweaks to reduce final executable size[/codebox]

>>> stuns11.zip <<<

Старая версия, больше не поддерживается:
Old codebase version, not supported anymore:
stuns05.rar

Русским языком:
- больше не создаётся временный файл в 256 Мб (у меня из-за него иногда места на диске нехватало), а выделяется блок памяти
- размер этого блока памяти можно настроить через командную строку, например: -mem128 отведёт уже 128 Мб памяти
- наконец-то (!!!) добавлена возможность пропускать файлы меньше чем указанный размер, чтобы не рыться в том, что не нужно: -skip123 пропустит файлы размером <=123 байта
- пара косметических изменений
Axsis, Siberian GRemlin,
May 25 2013, 16:31 Strippers
Искал чем можно заоптимизить .OGG - нашёл аж целую кучу утилит (там и для .OGG была): FileOptimizer
Чтобы не искать на странице ссылку на закачку: /FileOptimizer/
Grom PE,
May 18 2013, 13:10 FireFox: addons, extensions, tweaks, etc.
Я не понял, т.е. ты просто хочешь перезапустить Firefox?
Кто тебе мешает его закрыть и снова открыть?
А! Ты про перезапуск изнутри самого Firefox?
Я для перезапуска (когда добавляю новые забаненные стили в userContent.css) использую дополнение Addon Developer Helper 0.05. Там все функции у меня глючат, кроме одной - Restart Firefox, но остальные мне и не нужны. Она работает как надо, даже вкладки сохраняет. Правда с новым Firefox это дополнение, вроде бы, не работает, так что поищи аналоги - я как минимум ещё 2-3 похожих расширения встречал пока это нашёл (уже не помню чем меня те не устроили).
Siberian GRemlin,
May 14 2013, 09:00 FireFox: addons, extensions, tweaks, etc.
Поглядел под Firefox 20.0.1, правда не на своём компьютере и создал новый профиль (т.е. расширений не было никаких). Windows 7 x64, куча ядер у процессора и столько же гигабайт оперативной памяти.
В запущенном виде Firefox 20.0.1 занимает в процессах около 150 Мб, при этом он пустой, т.е. ни одной вкладки не открыто. При открытии сайта kinopoisk.ru болтается в пределах 260-270 Мб. За отметку в 300 ни разу не переваливал.
После того как зашёл на сайт, я проблевался, поставил AdBlock Plus и добавил туда:
*st.kinopoisk.ru/images/bnnr/*
После чего по сайту уже можно было ходить.
Гулял по разным ссылкам там, но, повторюсь, за отметку в 300 Мб Firefox не вылезал.
Так что попробуй отключить все расширения, потом включай по одному и смотри что отжирает память.
Siberian GRemlin,
Mar 17 2013, 21:47 InstallShield CAB View
Ага, спасибо, исправил и пересобрал - лежит там же. Пробуй. Мне, увы, проверить не на чем.
Axsis,
Dec 31 2012, 11:38 С наступающим Новым годом!
Ну, вот и ещё один год подошёл к концу.

Как я и говорил год назад - всё обошлось. (*улыбается*)
Глобальные катаклизмы миновали нас в этом году.

Что же касается года наступающего, то хочется пожелать чтобы он прошёл спокойно, удачно и хорошо.
Пусть Новый Год изменит что-нибудь в нашей жизни в лучшую сторону, а если менять уже нечего - то пусть сделает жизнь ещё лучше, ярче и веселей - пределу нет совершенства. (*улыбается*)

С праздником!
Axsis,
Sep 19 2012, 14:38 No-CD for Disciples: Sacred Lands
Спасибо!
Добавил патч во второе сообщение - должен работать для всех версий.
Raf-9600,
Sep 6 2012, 20:32 Delphi, Asm, C, WinAPI, PHP, ...
Все, наверное, помнят, что в .BMP формате строки изображения записываются снизу вверх и от этого, если читать его по обычному, то оно вверх ногами?
Сегодня ковыряясь с .BMP и читая справку (Win32.hlp за 1996 год, которой я постоянно пользуюсь), натолкнулся на откровение (в описания структуры BITMAPINFOHEADER):
QUOTE
If biHeight is positive, the bitmap is a bottom-up DIB and its origin is the lower left corner. If biHeight is negative, the bitmap is a top-down DIB and its origin is the upper left corner.
Проверил - задал высоту отрицательной и... работает, зараза! Даже ACDSee 5.0 понимает.
Программы, которые вяло следуют (или вообще не следуют) стандартам, конечно, накроются тазом, если читают поля как беззнаковые, но в остальном даже обидно как-то - всю жизнь маялся и перевёрнутым записывал. Эх, где ж это всё раньше было?..
В msdn это тему расширили - см. описание biHeight.
jTommy, Siberian GRemlin,
Aug 26 2012, 23:01 Замена ACDSee
ACDSee 5.0 Pro - это, насколько я знаю, один из последних в линейке. Выглядит и работает он как не буду выражаться что.
Тот ACDSee 5.0 PowerPack для которого я делал патчи был за 2002 год. Он хорош всем, кроме того, что не умеет файлы с символами не в ANSI-кодировке открывать (но проблем с именами на русском не будет, если что). Например, когда я писал распаковщик для игры Fate/Stay Night - там большая часть файлов, в том числе и картинки, имели имена на японском. При помощи CreateFileW() я их без проблем извлекал и сохранял на диск. Но вот такие имена (с иероглифами) ACDSee 5.0 PowerPack (2002) открыть не мог.
ACDSee 5.0 PowerPack можно взять тут (нагуглил):
CODE
ftp://irc.nn.ru/soft/%E4%EB%FF%20%E8%E7%EE%E1%F0%E0%E6%E5%ED%E8%E9/ACDSee%205.0/
или (если будешь вручную туда добираться):
CODE
ftp://irc.nn.ru/soft/для изображений/ACDSee 5.0/

Тебе оттуда нужны только файлы:
QUOTE
ACDSee50PowerPack.exe - собственно, сама программа
instmsia.exe - понадобится, если будешь ставить на Windows 98
ror.nfo - там серийник
acdsee5pp_rus.rar - руссификатор
Остальное не нужно. Я специально проверил, чтобы эти файлы были точно такие же как у меня (чтобы вирусов не было и т.д.).

Ещё можешь XnView поглядеть - он вообще бесплатный для некоммерческого использования + там SDK есть, можно свои плагины писать (для каких-нибудь форматов).
jTommy,
Aug 6 2012, 15:33 Tape archive [.TAR]
QUOTE
The chksum field is the ASCII representation of the octal value of the simple sum of all bytes in the header block. Each 8-bit byte in the header is added to an unsigned integer, initialized to zero, the precision of which shall be no less than seventeen bits. When calculating the checksum, the chksum field is treated as if it were all blanks.

Отсюда и ниже - подробное изложение формата. Насчёт того что там с размером - не в курсе, а искать в тексте влом.
Думаю, что размер файла тоже в какой-нибудь восьмеричной системе счисления (octal value) хранится.
Siberian GRemlin,
Jun 2 2012, 22:53 Star Wars: Galactic Battlegrounds music fix
QUOTE(Raf-9600 @ Jun 2 2012, 20:16) [snapback]3339[/snapback]
upd
Даже на крякнутых exe-шниках работают! laugh.gif
Эти патчи изначально так и задумывались, чтобы работать на любой версии файла.

QUOTE(Raf-9600 @ Jun 2 2012, 20:16) [snapback]3339[/snapback]
upd2
Только есть один нюанс по поводу того что ты написал в текстовом файле. На самом деле exe-шник от Clone Campaign я тебе дал уже обновлённый до версии 1.1, так что в текстовике стоит указать что фикс именно для этой версии.
О таких вещах предупреждать надо. Архив обновил - лежит там же. Проверяй для CC 1.0. Кстати, все эти патчи только для английской версии. На немецкой (German) и для других языков (если такие версии есть), оно работать не будет, потому что там, скорее всего, будут другие смещения.
Raf-9600,
Jun 2 2012, 19:52 Star Wars: Galactic Battlegrounds music fix
Для всех версий: gbgfixes.zip
Подробности в .TXT файле.
Проверяй.
Raf-9600,
Jun 2 2012, 18:49 Star Wars: Galactic Battlegrounds music fix
Вот для 1.1 - если будет работать, то сделаю такой же и для Clone Campaign.
Распаковать в каталог с версией 1.1 и запустить. После этого файл-фикс можно удалить.

Файл для "Clone Campaign" называется "battlegrounds_x1.exe" или ты его специально переименовал?
Т.е. это его оригинальное имя или нет?
Raf-9600,
Apr 24 2012, 16:19 Delphi, Asm, C, WinAPI, PHP, ...
О, блин, 4-ый PHP это уже здорово, чем вообще ничего!
Я не знал об этом, поэтому и предложил вот это всё.
Думаю с PHP у тебя уже проблем не будет.
Предложить особо нечего - если MySQL или какой-либо БД нет, то тогда действительно только в .XML хранить БД и парсить её при генерации страниц сайта на PHP.
simplexml_load_file(), к сожалению, только в PHP 5 появилась, смотри в сторону xml_parser_create() и других функций - они, судя по руководству к PHP, есть и в 4-ой версии.
Вот годная статья: XML и PHP, парсинг для чайников.
Siberian GRemlin,
Apr 8 2012, 12:13 Полезные ссылки
Command-Line Pack by Neill Corlett
Мне оттуда нужен был только unecm.exe, но обнаружил ещё пару интересных утилит, например:
fakecrc - подделывает CRC32 сумму у файла, изменяя 4 байта по указанному смещению (если не указано - меняет последние 4 в файле).
pecompat - неплохая утилита для быстрого переколбашивания новых PE-файлов, чтобы они работали в старых версиях Windows - см. комментарии на странице с программой (например, OS version и SubSystem version устанавливает в 4.0).
subfile - извлекает кусочек от файла, с нужного смещения - думаю, для форума Extractor.ru пригодилась бы.
vb2rip - потрошитель vb2 формата - Xplorer что-то такое для Resident Evil 3 писал, не знаю, насколько эта штука удобнее или лучше.
Siberian GRemlin,

6 Страниц V < 1 2 3 4 5 > » 
Упрощённая версия Сейчас: 21st August 2019 - 07:02