Wirusy w Delphi

TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Witam... piszę ten post ku przestrodze. Ostatnio miałem nie przyjemny incydent na swoim laptopku. Jak zwykle modyfikowałem swój projekt w Delphi(używam Delphi 7 lite - lazarusa porzuciłem ze względu na brak wstawek assemblerowych), aż tu nagle moja zapora wyświetla mi komunikat, że mój Project1.exe próbuje się łączyć z internetem...

Zdumiony tym zdarzeniem zastanawiałem co się dzieje... Przecież w execu nie ma nawet grama kodu odpowiedzialnego za łączenie się z internetem... a w tle działa Eset32... Pomyślałem że to nie możliwe żebym miał jakiegoś syfa w systemie

Niestety Project1.exe nachalnie próbował się łączyć z internetem. Wywaliłem eseta z bólem w sercu... i ściągnąłem AdAdware... Odpalam Delphi... a tu wyskakuje czerwone okienko: Backdor Detected! Win32.Hupigon

Niestety nie można było zrobić Disinfect, tylko delete...

Przeskanujcie sobie Delphi tym programikiem polecam, ArcaVir, Kaspersky Antywirus, i Avast nic nie wykryły!!!

AdAdware lub podobnym

0

Niektóre programy tego typu mogą postawić błędną diagnozę. Utworzyłem sobie plik exe ze skryptu napisanego w języku Python aplikacją PyInstaller i AVG go nie lubił. Po update antywirusa, przestało się czepiać ;)

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

lazarusa porzuciłem ze względu na brak wstawek assemblerowych

Czekaj, powtórz bo chyba nie rozumiem :|
Przecież możesz w nim pisać normalne wstawki Assemblerowe, jedynie musisz włączyć jakiś konkretny assembler.
Do kompilatora przekaż bodajże -rintel (by mieć składnię Intelowską), pewnie z poziomu środowiska lub jakiejś dyrektywy kodu też można to zrobić.


TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Eee... to nie był fałszywy alarm... bo czysty execk skompilowany w Delphi łączył się z internetem. Odpale lazarusa i zobacze jeszcze raz:)

ale ten execk 13MB w lazarusie mnie rozwala....

podczas próby dodania takiej wstawki:

asm
int 3
xor eax, eax
end;

kompilator wywala taki komunikat:

"Fatal: Selected assembler reader not supported"... eh

poszukam w opcjach kompilatora

edytowany 2x, ostatnio: tweety
PR
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:304
0

Ja się pogubiłem to ci wywala że twój project1 ma viska czy coś w folderze bin z delphi?


CodeGear Delphi 2007 | Windows 7 |
Jak to dobrze że istnieje opcja edytuj post ;]
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

AdAdware wykryło trojana w delphi32.exe i w pliku skompilowanym

szopenfx
  • Rejestracja:prawie 21 lat
  • Ostatnio:5 miesięcy
1

Kilka lat wstecz krążył wirus, który doklejał się do skompilowanych programów napisanych w delphi (konkretnie jakiegoś modułu) i zarażał inne delphi - groźne jeśli dajesz exe'ki np. znajomemu, który jerst programistą.

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0
tweety napisał(a):

ale ten execk 13MB w lazarusie mnie rozwala....

To wszystko jest dla Twojego dobra ;) Ale jak chcesz, możesz wyłączyć m.in.dodawanie symboli debuggera - wtedy będziesz miał około 3 MB.

tweety napisał(a):

Fatal: Selected assembler reader not supported

-rintel do kompilatora lub poszukaj w opcjach projektu.


Inquis1t0r
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 3 godziny
  • Postów:287
3
tweety napisał(a):

Delphi 7 lite

To chyba wszystko wyjaśnia.


"I am like a mage invoking incantations into a mysterious black box, conjuring useful applications and bending it to my will."
PR
W sumie racja nie ma pewności co do jakości IDE w które ingerowały osoby trzecie :D
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
0
szopenfx napisał(a)

Kilka lat wstecz krążył wirus, który doklejał się do skompilowanych programów napisanych w delphi (konkretnie jakiegoś modułu) i zarażał inne delphi

Najprawdopodobniej masz na myśli wirusa o wdzięcznej nazwie Win32:Induc.A, który właśnie w ten sposób infekował kolejne środowiska; Sam go jakieś pół roku temu miałem u siebie na komputerze, ale NOD32 nie miał najmniejszego problemu z rozpoznaniem zagrożenia; Trochę mnie dziwiło i denerwowało, jak podczas każdej kompilacji usuwał świeżego exe'ka i informował o zagrożeniu, ale nie miałem pojęcia, że faktycznie może zainfekować środowisko (a konkretniej moduł SysConst.dcu);

Więcej informacji na temat Win32:Indus.A:


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

to by wyjaśniało że czysty .exe łączy się z internetem, właśnie robię pełny skan systemu, mam dużo syfu, większość trojanów znajduje się w katalogu
c:\System Volume Information do którego nie mam dostępu chociaż jestem adminem... dziwne że eset32 nic nie wykrył, widocznie nie aktualne bazy wirusów albo program do kitu? a miałem o nim dobre zdanie

a co do tego -rintel to jak to włączyć w lazarusie? nie kompiluję ręcznie tylko automatycznie z IDE

assembler by się przydał... programy pisane w tym języku są po prostu czyste i małe

zaletą tych 13 Megowych execków jest to że uruchamiają się na każdym systemie operacyjnym, ale te z delphi lite też to potrafią a ważą 250KB... wiem że dyski są duże ale 13MB to przesada

edytowany 1x, ostatnio: tweety
kult
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad rok
3
tweety napisał(a):

większość trojanów znajduje się w katalogu
c:\System Volume Information do którego nie mam dostępu chociaż jestem adminem...

uświadomiłeś mnie, że jednak warto wstać z tego krzesła i iść się trochę przespać.

PR
  • Rejestracja:około 16 lat
  • Ostatnio:ponad 9 lat
  • Postów:304
0

13Mb masz bo dołącza debug info do exeka i inne pierdoły które służą do debugowania, jak je odłączysz to też będzie lekki.
Czy ty wiesz co to jest? c:\System Volume Information


CodeGear Delphi 2007 | Windows 7 |
Jak to dobrze że istnieje opcja edytuj post ;]
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

assembler by się przydał... programy pisane w tym języku są po prostu czyste i małe

I tak co dłuższego kodu nie zoptymalizujesz znacznie lepiej, niżeli zrobiłby to FPC, a jedynie narobisz sobie bałaganu w kodzie - wstawki w dzisiejszych czasach nie są polecane (no, chyba że piszesz kernel systemu).
Aby włączyć składnię Intelowską możesz z poziomu kodu:
{$ASMMODE INTEL}
... lub wejdź do ustawień projektu, potem wybierz Opcje kompilatora -> Analiza, a stamtąd już masz obie składnie do wyboru.

zaletą tych 13 Megowych execków jest to że uruchamiają się na każdym systemie operacyjnym

Czekaj, czekaj - że niby co?!
Bzdury gadasz - na każdym systemie/architekturze i tak musisz przekompilować cały projekt, a aplikacja zajmuje "aż" 13 MB, ponieważ są tam dodane symbole debugujące dla GDB, aby debugowanie programu było łatwe.

Aby zmniejszyć rozmiar pliku wykonywalnego, w opcjach projektu ustaw:
Łączenie -> Wyczyść z symboli plik wykonywalny


edytowany 1x, ostatnio: Patryk27
TW
asm śmiga pięknie! :) dzięki he
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
0
tweety napisał(a)

to by wyjaśniało że czysty .exe łączy się z internetem

Post, który napisałem wyjaśnia słowa @szopenfx, natomiast Ty masz do czynienia z backdoor'em o wdzięcznej nazwie Hupigon:

Hupigon.OET napisał(a)

Rodzaj: Backdoor

Szkodnik pojawia się w postaci pliku wykonywalnego pobieranego bezpośrednio z internetu lub też jako część innego malware przenoszącego komponent tego backdoora. Trojan jest skompresowany programem BeRoEXEPacker v1.00. W trakcie instalacji tworzy plik setuplog.DLL zawierający podstawowe elementy trojana, tworzy także kopię siebie samego i umieszcza ją w pliku setuplog.bat. Jest to zabezpieczenie szkodnika na wypadek usunięcia pliku dll. Po zainstalowaniu, backdoor stara się połączyć ze zdalnym serwerem i powiadomić zdalnego napastnika o powodzeniu infekcji. Następnie rozpoczyna skanowanie po kolei wszystkich portów zainfekowanego komputera w poszukiwaniu otwartego, który mógłby posłużyć do komunikacji z napastnikiem. Pośród innych umiejętności szkodnik posiada także zdolność do przechwytywania ekranu i zapisywania obrazków w postaci plików video lub graficznych.

Aliasy nazwy: TrojanSpy:Win32/Logsnif.gen [Microsoft] BackDoor-AWQ.svr.gen.a [McAfee]

No i tak jak jest napisane w opisie: "Szkodnik pojawia się w postaci pliku wykonywalnego pobieranego bezpośrednio z internetu lub też jako część innego malware przenoszącego komponent tego backdoora." - stąd nie dziw się, że łączy się z siecią;

tweety napisał(a)

mam dużo syfu, większość trojanów znajduje się w katalogu
c:\System Volume Information do którego nie mam dostępu chociaż jestem adminem...

A nie wziąłeś pod uwagę tego, że praca non-stop na koncie z uprawnieniami administratora to nie jest najlepszy pomysł? Dzięki temu szkodliwe oprogramowanie może wykonywać wszelkie operacje, które może także wykonywać admin; Obniżając uprawnienia (lub pracując na koncie o ograniczonych uprawnieniach) ogranicza się stopień "zniszczeń", jakie może spowodować wirus/backdoor;

tweety napisał(a)

zaletą tych 13 Megowych execków jest to że uruchamiają się na każdym systemie operacyjnym, ale te z delphi lite też to potrafią a ważą 250KB... wiem że dyski są duże ale 13MB to przesada

Może najpierw poznaj proces kompilacji, a dopiero potem narzekaj; Owszem, w dzisiejszych czasach są potężne HDD i bardzo szybkie łącza, jednak usuwając z pliku wykonywalnego tzw. "śmieci" możesz znacznie zmniejszyć rozmiar exe'ka; Najwięcej zajmują symbole debugera - wyłączając odpowiednią opcję w preferencjach projektu plik wykonywalny zmniejszy się do nieco ponad 1MB; Do tego można użyć strip'era czy UPX i plik będzie jeszcze mniejszy; Rozmiar można jeszcze bardziej zmniejszyć dzięki odpowiednio przygotowanym plikom graficznym;

Tak nawiasem: Write once, compile anywhere znaczy Napisz raz, skompiluj gdziekolwiek;


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Moja wiedza na ten temat opcji kompilacji w Lazarusie jest ograniczona, więc dziękuję za podpowiedzi. Lazarus ma przewagę nad Delphi - jest nowocześniejszy. A co do c:\System Volume Information to wiadomo że jest to katalog przywracania systemu

Temat uważam za zamknięty, Pozdrawiam! :)

1

nad delphi 7 personal to moze ma przewage, a nie nad 'delphi'

Zobacz pozostałe 4 komentarze
Patryk27
Parę poprawek w kodzie + dodanie paru stałych, których FPC w sobie nie posiada i kod się kompiluje (nie sprawdziłem czy działa): http://4programmers.net/Pastebin/2086
olesio
Pod FPC 32 bit ani pod Lazarusem 64 bit po Twoich zmianach się mi nie kompiluje. W sumie to i tak dla mnie to mało ważne, bo mam możliwość i wolę do celów tego modułu oraz stosować sprawdzone Delphi 7. Jeżeli piszę pod 32 bit, a w zasadzie głownie tak piszę.
Patryk27
Hm... Lazarus 1.0.4 wraz z FPC 2.6.0 na Win32 - kompiluje się bezproblemowo. Jakie błędy wyrzuca (bo to dość nienaturalne zachowanie)?
olesio
Pod 64 bitowym Lazarusem: http://4programmers.net/Pastebin/2087 a pod FPC, także mnóstwo blędów.
Patryk27
Ostrzeżenia są, bo FPC zwraca większą uwagę na przenośność kodu, niżeli Delphi i jeżeli castuje się Pointer na jakiś typ liczbowy (tutaj: LongWord), wyświetla warning. Jedyny błąd jaki jest to problem z kodem Asm: Asm: [push reg32] invalid combination of opcode and operands, ale tego już nie jestem w stanie naprawić (bo nie znam się na Assemblerze i nie mam 64-bitowego komputera).
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

trojan znajduje się w instalce Delphi (InstallShield), co ciekawe Nod32 6.0 ze zaktualizowanymi bazami danych niczego nie wykrywa

flowCRANE
Nawet przy włączonej heurystyce?
TW
właśnie z włączoną heurystyką;/ f-prot natomiast wykrywa go bez problemu
olesio
@tweety: a jesteś w stanie uploadować tę spakowaną instalkę rarem na hasło na przykład: infected - ale na pewno z tym trojanem na jakiś sensowny, darmowy hosting? Może być mediafire i podać tutaj link. Dałbym info ludziom z Krakowa. Szanuje ich za widze, a od niedawna używam produktu ESET'u, po przeiadce z KAV 2010 i jestem zadowolony. A jak zdarzał mi się false positive w moim programie korzystającym z vortex'u to Panowie poprawili co trzeba i problemu nie było. A jeśli przy okazji mogę jakoś pomóc podsyłając podejrzane próbki to dlaczego mam nie pomóć im udoskonalać bazy.
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Trojan znajduje się w pliku delphi32.exe, radzę nie uruchamiać...

http://chomikuj.pl/Chomicz0wka/Trojan+Win32.Hupigon

edytowany 1x, ostatnio: tweety
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Ok, dzięki - podałem link jednej osobie z viruslabu. Obiecał spojrzeć, przeanalizować i dodać detekcję.


Pozdrawiam.
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Przydało by się, żeby Nod32 6.0 nie przepuszczał koni trojańskich......

olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Jeżeli są znane viruslabom tej firmy i dodane do baz, to podejrzewam że ich nie przepuszcza, a jeżeli się mu niestety zdarza, bo wiadomo nic idealne nie jest, to można takie podejrzane pliki wysłać na odpowiedni e-mail do późniejszej analizy, a z pewnością zostaną dodane.


Pozdrawiam.
flowCRANE
W samym programie jest przecież opcja Prześlij do analizy;
olesio
Dokladnie, ale i tak w pliku który wystawił @tweety na pewno nie ma wirusa. Jest on czysty, tak stwierdził po analizie jeden gościu z ESET'u. Być może jakiś inny składnik IDE jest zainfekowany albo jakaś dllka albo pewnie dcu. I to raczej by powodowało problemy.
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

no co wy chłopaki... AdAware i F-Prot wykrywają trojana... a projekty po kompilacji łączą się z netem.... jak nie ma jak jest... trojan jeszcze przed wysyłaniem sprawdzałem... chyba że może jeszcze jakiegoś innego Vira miałem

edytowany 1x, ostatnio: tweety
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

eset 6.0 też stwierdził że jest czysty... a inne programy stwierdziły że jest trojan... wyśle screena jak zrobie

no ale co z tego wynika? że 2 programy anty wirusowe się mylą a ja mam innego wirusa którego nie wykrył eset32??? ;)

edytowany 4x, ostatnio: tweety
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
0

no co wy chłopaki... AdAware i F-Prot wykrywają trojana...

No widzisz, część antywirusów wykrywa zagrożenie, część zaś nie; Heurystyka też potrafi być uciążliwa;

a projekty po kompilacji łączą się z netem....

Wyniki na VirusTotal mówią same za siebie - głównie trzeba patrzeć na wiodące w tej branży oprogramowanie i one akurat nie widzą problemu;

Przydało by się, żeby Nod32 6.0 nie przepuszczał koni trojańskich......

I nie przepuszcza - możesz wierzyć w to co pisze wyżej @olesio i informacje jakie uzyskał od pracownika ESET;

Napisałeś, że jak skompilujesz i uruchomisz program to wtedy łączy się z siecią; Nie napisałeś natomiast, czy skompilowany program uruchomiony bezpośrednio z dysku także się łączy, czy może nie - sprawdź to, bo jeśli się nie łączy z netem po uruchomieniu z dysku to najprawdopodobniej pozostanie usunięcie pliku delphi32.exe (zamiana na niezainfekowany) i sprawdzenie autouruchamianych programów i usług; Poza tym i tak musisz się pozbyć pliku delphi32.exe jeśli żaden z antywirusów nie może go wyleczyć; Z każdym uruchomieniem Delphi uruchamiasz także wirusa, więc w ten sposób nigdy się go nie pozbędziesz;

Tak na przyszłość - pracuj na koncie z ograniczonymi uprawnieniami, a unikniesz części problemów związanych ze szkodliwym oprogramowaniem;


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

ten backdor to pikuś kiedyś na win xp miałem Win32.Kriz... to dopiero był wirus, w ciągu 5 minut zainfekował ponad 5000 plików włącznie z kernel32.dll który przecież jest chroniony przez system;) 25 grudnia uruchamia kasowanie dysku

flowCRANE
Ooo, to faktycznie ciekawy robaczek ;)
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 10 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
0
tweety napisał(a)

w ciągu 5 minut zainfekował ponad 5000 plików włącznie z kernel32.dll który przecież jest chroniony przez system;)

Owszem, ale:

Aby zainfekować plik KERNEL32.DLL, który może być otwarty w trybie tylko do odczytu, gdyż jest on używany przez system, wirus używa standardowego triku. Kopiuje ten plik. Nadaje mu chwilową nazwę KRIZED.TT6. Kopia ta umieszczona jest w katalogu systemowym Windows. Infekuje kopię. Następnie zapisuje w pliku WININIT.INI instrukcję zmieniającą nazwę na oryginalną. Przy następnym uruchomieniu systemu plik KERNEL32.DLL jest już zarażony.

Źródło: WirusPC - Win32.Kriz


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)