Про языки программирования

Тема в разделе "WASM.HEAP", создана пользователем EvilsInterrupt, 23 окт 2008.

  1. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    То что делает сейчас Visual Assist X , в дельфи давно уже есть, пишется for и тут же строится конструкция и где тут лишнее нажатие кнопок ?
     
  2. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Не пользовался пакерами, а разве он при распаковке не восстанавливает в памяти тот код котрый был до изначально?
    можно подумать, что есть неломаемые защиты или что большинство юзеров не умеет гуглить кряки :)) А если прога действительно нужная, то сколько её ни защищай кряки в сети появятся ;)

    С дельфёй игрался давно - переписал на неё один из своих асм проектов с большим объёмом FPU вычислений и сначала порадовался, что тормоза всего-то раза в 1,5 - думаю классный код Дельфя сгенерила :)) а потом заметил, что у меня в командной строке тасма потерялся ключик отключающий эмуляцию FPU :))) т.е. тормоза оказались по сравнению с тормозным FPU эмулятором, и это с учётом того, что я тогда про оптимизацию на асме почти ничего не знал :))
    Полностью согласен - дельфя закрывает чакры, а без них нормальную прогу не напишешь :))
     
  3. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    EvilsInterrupt
    Как раз ПАКЕР после выполнения распаковки оставляет код нетронутым, да и протекторы хм.. не уравнивают педально-избыточный код с нормальным. Как уже тут не раз писали, те кому приходилось реверсить делфи-программы, вряд ли будут думать, что делфи -- хороший язык, ничем не хуже си и т.д. =)
    А вообще замечал, что если вопрос по реализации чего-нибудь на делфи, то он ставится "подскажите, где реализовано", а не "подскажите, как сделать", хотя возможно мне просто так везло на посты =)
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Дайте заценить дров, написанный на дельфи, яву и др..
     
  5. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Y_Mur
    Фигня какая-то. Нормальный человек не считает "нажимы на клавиши", на кнопкоклацанье вообще уходит (по крайней мере, должно уходить у профпригодного программиста) неизмеримо меньше времени, чем на выгрызание умных мыслей из шариковой авторучки. А у меня больше всего рабочего времени так и вообще уходит на мысли о том, что вот сейчас дочитаю очередной номер "Эго" или там "Космо", и надо бы написать хоть пару процедурок, а то неудобно как-то.
     
  6. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Clerk - Доводилось пересобирать звуковую WDM дровину, ( иногда падала в BSOD при сильной нагрузке). Делалось так. Проприетарный дроф (вероятно писаный на сях) запихивался в IDAPRO, из нее вытаскивалсо ASMЪ сорц, немного доводилсо до ума, компилялся TASM-ом, после чего сей obj'ик, был заюзан в PAS-сорце и все это дело скармливалось дельфе компилю, а тот в свою очеред делал DLL (она потом хачилась в SYS простейшей тулзой).

    Некоторые часте из ASM сорса выносились в PAS, в целях оптимизации...
    Выглядело примерно так:

    Код (Text):
    1. library viaaudio;
    2.  
    3. const hal = 'hal.dll'; ntkrnl = 'ntoskrnl.sys'; prtcls = 'portcls.sys';
    4. //; Imports from HAL.dll
    5. procedure READ_PORT_ULONG; external hal;
    6. procedure WRITE_PORT_ULONG; external hal;
    7. procedure WRITE_PORT_USHORT; external hal;
    8. procedure WRITE_PORT_UCHAR; external hal;
    9. procedure READ_PORT_USHORT; external hal;
    10. procedure READ_PORT_UCHAR; external hal;
    11. procedure KeStallExecutionProcessor; external hal;
    12. procedure KfAcquireSpinLock; external hal;
    13. procedure KfReleaseSpinLock; external hal;
    14. //; Imports from ntoskrnl.exe
    15. procedure PoSetPowerState; external ntkrnl;
    16. procedure IofCallDriver; external ntkrnl;
    17. procedure KeInitializeEvent; external ntkrnl;
    18. procedure IoInitializeIrp; external ntkrnl;
    19. procedure IoAllocateIrp; external ntkrnl;
    20. procedure KeSetEvent; external ntkrnl;
    21. procedure IoDeleteDevice; external ntkrnl;
    22. procedure IoInvalidateDeviceRelations; external ntkrnl;
    23. procedure IoFreeIrp; external ntkrnl;
    24. procedure KeWaitForSingleObject; external ntkrnl;
    25. procedure ExAllocatePoolWithTag; external ntkrnl;
    26. procedure MmMapIoSpace; external ntkrnl;
    27. procedure KeInitializeMutex; external ntkrnl;
    28. procedure KeReleaseMutex; external ntkrnl;
    29. procedure KeInitializeSpinLock; external ntkrnl;
    30. procedure ExFreePool; external ntkrnl;
    31. procedure PoStartNextPowerIrp; external ntkrnl;
    32. procedure IofCompleteRequest; external ntkrnl;
    33. procedure RtlInitUnicodeString; external ntkrnl;
    34. procedure RtlAppendUnicodeToString; external ntkrnl;
    35. procedure RtlIntegerToUnicodeString; external ntkrnl;
    36. procedure RtlAppendUnicodeStringToString; external ntkrnl;
    37. procedure IoCreateDevice; external ntkrnl;
    38. procedure ObfDereferenceObject; external ntkrnl;
    39. procedure ObfReferenceObject; external ntkrnl;
    40. procedure InterlockedIncrement; external ntkrnl;
    41. procedure InterlockedDecrement; external ntkrnl;
    42. procedure _alldiv; external ntkrnl;
    43. procedure _allmul; external ntkrnl;
    44.  
    45. //;Imports from portcls.sys
    46. procedure PcNewPort; external prtcls;
    47. procedure PcRegisterPhysicalConnection; external prtcls;
    48. procedure PcRegisterAdapterPowerManagement; external prtcls;
    49. procedure PcNewMiniport; external prtcls;
    50. procedure PcRegisterSubdevice; external prtcls;
    51. procedure PcAddAdapterDevice; external prtcls;
    52. procedure PcNewInterruptSync; external prtcls;
    53. procedure PcGetTimeInterval; external prtcls;
    54. procedure PcNewRegistryKey; external prtcls;
    55. procedure PcNewServiceGroup; external prtcls;
    56. procedure PcNewResourceSublist; external prtcls;
    57. procedure PcInitializeAdapterDriver; external prtcls;
    58.  
    59.  
    60. procedure sub_10716;//  proc near       //; DATA XREF: .rdata:00011B18o
    61. asm
    62. //arg_0     = dword ptr  4
    63.         xor eax, eax
    64.         push    eax
    65.         push    eax
    66.         push    eax
    67.         push    eax
    68.         mov eax, [esp+10h+dword ptr 4]
    69.         add eax, 50h
    70.         push    eax
    71.         call    KeWaitForSingleObject
    72.         ret 4
    73. end;
    74.  
    75.  
    76. procedure _DriverEntry; external;
    77. {$L viaud}
    78. asm
    79.    leave
    80.    jmp _DriverEntry
    81. end.
    так что, чем дельфе не асмЪ?
     
  7. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    SII
    Мир. Мир. Я сам когдато пасил. Ничего плохого в пасоподобных лангах не вижу и пользую их когда надо (напр, пасоподобный луа - имхо наиболее оптимальный вариант в разрезе - функционал/размеры/скрость среди скриптовых языков). Оберон и оберсемейство даже очень нравится (непонятно чего пасеры так на дельфу подсели, обероны имеют приятнее синтаксис, открыты, имеют кучу реализаций под разные платформы, идея интерфейса - это чтото с чемто. Немного довести интерфейс (имхо), разобраться с компоновщиком и импортером (или это есть уже?) ).

    Ну, а мне ветка С приятнее. Вкус такой. Для себя втыкаю в инферно с лимбо (отСшный модульный поточноориентированый, с очень строгой типизацией (двойная проверка) язык). Здорово смесь уних с обероном напоминает + есть там еще. Идея на идее. Очень до ума довести охота.
     
  8. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Как по мне это скорее недостаток чем достоинство. Хотя и в Дельфи это реализуется очень просто. Достаточно наследовать класс от TInterfacedObject - и подсчет ссылок и автоматический вызов деструкторов обеспечен.

    Такая операция была всегда.
     
  9. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Создание драйверов режима ядра в среде Borland Delphi
    http://www.rsdn.ru/article/delphi/kmdelphi.xml
     
  10. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    >>автоматический вызов деструкторов обеспечен.
    причем изначально это было применено в васике, а потом Delphi и токо потом в с++.

    на заметку:
    всем привычное Ctrl+space подсказка по дописыванию ф-ции\переменной и т.д. перекочевала из васика, может не будем пользоваться этим ?
     
  11. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    /offtop
    Я думаю, Clerk'у тоже пригодится..
    Прилось в свое время написать, чтобы мостиков не было:
    Код (Text):
    1. inv0ke macro fname, params: VARARG
    2.     count = 0
    3.     FOR param, <params>
    4.         count  = count+1
    5.         @CatStr(var,%count) TEXTEQU <param>
    6.     ENDM
    7.     nparam = count
    8.     REPT count
    9.         push @CatStr(var,%count)
    10.         count = count -1
    11.     ENDM
    12.     %echo @CatStr(_imp__,fname,@,%(nparam*4))
    13.     extern @CatStr(_imp__,fname,@,%(nparam*4)): dword
    14. call    @CatStr(_imp__,fname,@,%(nparam*4))
    15. ENDM
    По мотивам уроков по оптимизации от _Mikl.
     
  12. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    EvilsInterrupt
    А как там смолтоки и прочие малопопуляризованые языки?
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    EvilsInterrupt
    Спасибо не знал, всегда пользовался Ctrl+J.
     
  14. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Aspire
    чтобы мостиков не было достаточно подключить правильные инклюды, и не надо никаких извращений с макросом ;)
    Правда куда то они тут на васме задевались... прикрепляю модифицированную версию под современные версии masm
     
  15. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    EvilsInterrupt
    непривычно видеть от тебя на форуме маты открытым текстом.
     
  16. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Y_Mur
    Не могу скачать. Залейте куда-нить ктонить. Спасибо.

    На сей момент сижу за изучением Си. После масма тяжеловато, если честно. Сложный синтаксис, очень много скобок, особенно при разименованиях/приведениях, с которыми тоже не просто разобраться. Код генерится очень близкий к масму. При отключенной оптимизации постоянно вижу такую картину в отладчике:
    call LoadLibraryA
    mov dword ptr [ebp-c], eax
    mov eax, mov dword ptr [ebp-c]
    ...

    При включенной оптимизации такого конечно же нет, что радует.
    Стандартной библиотекой стараюсь не пользоваться, у очень увеличивается объем экзешника - это во-первых, а во-вторых теряется смысл проиходящего в системе. Возмем тот же malloc vs VirtualAlloc или _try & _catch по сравнению с обычной реализацией сеха с помощью асма.

    Пользуясь случаем, хочу спросить, какой сишный компилятор наиболее полно поддерживает синтаксис асма? А то в VS Express 2008 с этим проблема.

    PS. Огромный респект Great! Огромный респект censored!
     
  17. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    EvilsInterrupt
    ты бросил отличную флудоБомбу с чем тебя и праздравляю:))))))
     
  18. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Да, да, видел где-то вроде на рсдн, примерно такой пример, что не нравится С-никам
    Код (Text):
    1. var
    2. Obj: TSomeClass;
    3. begin
    4. Obj:=TSomeClass.Create;
    5. // тут что-то делаем с обьектом
    6. Obj.Free; // Нужно явно освободить обьект, иначе будет утечка
    7. end;
    И чем-то им это не понравилось. Помоему все логично: обьект создается - обьект уничтожается...
    Еще бы так написали:
    Код (Text):
    1. var
    2. Buffer: Pointer;
    3. begin
    4. Buffer:=VirtualAlloc(....
    5. // Здесь что-то делаем с памятью
    6. VirtualFree(Buffer, ... // Память надо освободить, иначе будет утечка
    Или Ц и память освободит автоматически?

    Код (Text):
    1. var
    2. P: PChar; // любой типизированный указатель
    3. begin
    4. ...
    5. inc(P, 10);
    6. ...
    Вот я когда-нибудь соберусь с духом и перепишу DDK на Делфи :)
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Aspire
    Спасибо, но мне это не нужно. Не имеет значения есть ли ссылка. Даа, в макросах ты разбираешся.. и только..
    Partner
    К примеру, сегодня я продолжил писать трассировщик, чистый шелкод режима ядра. Другой язык кроме асма не подходит. Ну юзайте хлам - а я будем юзать асм).
     
  20. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Clerk
    Ты как всегда категоричен. А ведь согласись, как и у всех здесь присутствующих, у тебя есть свои пристрастия.
    Вот ты юзаешь масм. С какого перепугу? Ведь фасм гораздо более гибкий и низкоуровневый. Не нравится синтаксис, верно? Так это примерно тоже самое разлчичие, которое обсуждается здесь для ЯВУ ))
    Тебе даже Y_Mur указал _некоторые_ недочеты масма. Юзай фасм: импорт - руками, экспорт - руками, все руками.
    Про шеллкод здесь никто не спорит - и так понятно что асм.
    На самом деле, правильно кто-то сказал, что задача определяет язык. Если мне нужно написать вирус - я выберу асм, если многооконное, многофункциональное приложение - однозначно ЯВУ.
    Профессионалы со мной, я думаю, согласятся. Для тебя и меня - это хобби, а для них - это хлеб. И вылизывать каждый байт кода, чтобы Clerk это оценил (а реальный юзер _никогда_ не заметит разницы), им не надо. Отсюда разные подходы. Все ИМХО.