Ile kodu napisałeś?

Napisał bartek w kategorii Programowanie

Jeśli jesteś ciekawy ile linijek kodu napisałeś, a ile jest w nich komentarzy, w twoim projekcie, który wydaje Ci się duży, możesz to łatwo sprawdzić i pozbyć się wszelkich złudzeń :)

CLOC (Count Lines of Code) to program, który dokładnie analizuje pliki źródłowe w kilkudziesięciu językach programowania, pokazująć ile tak naprawdę jest samego kodu w kodzie ;)

http://cloc.sourceforge.net

Komentarz (1)

Assembler x100

Napisał bartek w kategorii Assembler, Programowanie

Chciałbym serdecznie Was zaprosić na stronę domową Wojtka Muły, który zebrał na niej sporą liczbę algorytmów oraz ciekawych snippetów napisanych w assemblerze z wykorzystaniem najnowszych rozszerzeń procesora (od x86 po SSE4).

Najlepszym przykładem talentu Wojtka jest biblioteka sse2string, czyli najczęściej wykorzystywane funkcje znanej z języka C, biblioteki string.h, napisane w assemberze z wykorzystaniem rozszerzeń SSE2.

Wojtek prowadzi również bloga, gdzie można znaleźć ciekawe snippety w assemblerze, pierwszy z brzegu przykład warunkowej wymiany rejestrów:

sbb edx, edx ; part of step 2. - edx = 0xffffff if CF=1, 0x000000 otherwise
mov ecx, eax
xor ecx, ebx ; step 1
and ecx, edx ; completed step 2. - now C is 0 or (A xor B)
xor eax, ecx ; step 3
xor ebx, ecx ; step 4

Myślę, że każdy fanatyk assemblera znajdzie tam coś dla siebie.

Strona domowa — wm.ite.pl
Blog — wmula.blogspot.com

Komentarz (1)

Optymalizacja kodu

Napisał bartek w kategorii Assembler, C/C++, Programowanie, Reversing

Znakomity przegląd optymalizacji wykonywanych przez kompilatory HLL, przedstawiony w formie prezentacji autorstwa Rolfa Rollesa.

Prezentacja — Binary Literacy — Static — 6 — Optimizations

Brak Komentarzy

Pobieranie adresu EIP

Napisał bartek w kategorii Assembler, Programowanie, Reversing

Pobieranie adresu EIP to jedna z ważniejszych czynności w kodzie wirusów, exe-pakerów, exploitów etc., poniższy artykuł prezentuje standardowe metody jak delta offset oraz te mniej znane na uzyskanie własnego adresu EIP.

http://corkami.blogspot.com/2010/03/si-cest-ton-corps-qui-bouge-cest-ton.html

Jeśli ktoś zna inne metody — dopiszcie się do komentarzy.

Brak Komentarzy

Alpha blending dla Delphi (MMX)

Napisał bartek w kategorii Assembler, Programowanie

Alpha blending dla Delphi w assemblerze z wykorzystaniem MMX:

function AlphaBlend(Pixel: dword; Background: dword; Alpha: byte): dword;
begin
 
  asm
 
  movzx       eax,Alpha       // kanal alfa 0-255
  imul        eax,01010101h   // 000000xx = xx xx xx xx
  movd        mm6,eax         //
  pxor        mm7,mm7         //
  punpcklbw   mm6,mm7         // rozpakuj do bajtow
 
  mov         edx,00FFFFFFh
  movd        mm2,edx
 
  movd        mm0,Background  // pixel z tla
  pand        mm0,mm2         // usun kanal alfa z tla
 
  movd        mm1,Pixel       // pixel obrazu
  pand        mm1,mm2         // usun kanal alfa z pixela
 
  punpcklbw   mm0,mm7         // rozpakuj pixel obrazu do bajtow
  punpcklbw   mm1,mm7         // oraz pixel litery do bajtow
 
  psubw       mm0,mm1         // src - pix
  pmullw      mm0,mm6         // *alpha
  psrlw       mm0,8           // >> 8
  paddb       mm0,mm1         // +
 
  packuswb    mm0,mm7         // spakuj ponownie do pixela
  movd        eax,mm0         // zapisz do eax
 
  mov         Result,eax
 
  end;
 
end;

To tylko przykład, można to zoptymalizować pod względem konwencji regcall, ale już mi się nie chcę, z dedykacją dla jednego geniusza, który twierdził, że to niemożliwe…

Komentarze (6)

Project Bukowski

Napisał bartek w kategorii Assembler, C/C++, Programowanie

Projekt metamorficznego silnika do mutacji kodu x86 dla plików wykonywalnych w formacie ELF. Nowatorskie podejście (w porównaniu z silnikami np. MetaPHOR) do analizy kodu, dobra dokumentacja i kompletny kod źródłowy.

nop-cavity-infection-fully-functional

http://bukowski-framework.blogspot.com/

http://sourceforge.net/projects/bukowski/

Efnet #bukowski

Brak Komentarzy