Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Evo jedan taze napisan kod =)))

[es] :: Asembler :: Evo jedan taze napisan kod =)))

[ Pregleda: 2808 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Vojislav Milunovic

Član broj: 25
Poruke: 2117
195.252.86.*



+1 Profil

icon Evo jedan taze napisan kod =)))11.11.2004. u 00:55 - pre 236 meseci
Code:

; File open/write/close foobar shitz some shitz with memory
;                              c0mrad 11/11/2004 ([email protected])
.486 
.model flat, stdcall

option casemap:none 

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib 

.data
    file      db    "c:\masm32\progz\a.txt",0
    oldstr     db    "Resource",0
    newstr  db  "c0mrad- ",0
    msgT    db  "Done",0
    msgTx   db  512 dup(0)
    format  db  "' %s ' changed with ' %s ' in file : %s",0dh
            db  "                    coded by c0mrad in MASM",0
    errT    db  "Error",0
    errTx   db  "Just Error, won't dooooo =(",0
    
.data?
    hFile      dd  ?      ;file handle
  fsize       dd  ?            ;variable for the filesize
  memptr     dd  ?            ;pointer to allocated memory
  bread    dd  ?            ;number of read bytes
  bwrite   dd  ?            ;number of written bytes
  strlen   dd  ?      ;len of string
  blabla   dd  ?      ;jedan buffer u koji premestam sumnjiv string da bi ga poredio sa lstrcmp
  off      dd  ?      ;I need offset to add to memptr so we get
                      ; addres of string we have to change =))
  sedx     dd  ?      ; lets save edx !!
  secx     dd  ?      ; lets save ecx !!
    

        
.code ; OK here we go =)))
  start:
   invoke CreateFile, ADDR file, GENERIC_WRITE + GENERIC_READ,\
                      NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,\
                      NULL
   .IF eax == NULL
       jmp err
   .ENDIF
   mov hFile, eax
   invoke GetFileSize, hFile, NULL
   mov fsize, eax
   invoke GlobalAlloc, GMEM_FIXED, fsize
   .IF eax == NULL
       jmp err
   .ENDIF
   mov memptr, eax
   invoke lstrlen, ADDR oldstr
   mov strlen, eax
   invoke ReadFile, hFile, memptr, fsize, ADDR bread, NULL
   .IF eax == NULL
       jmp err
   .ENDIF 
         ; ok we have our file loaded to memory and we can start
         
   mov eax, strlen
   add eax, 1
   invoke GlobalAlloc, GMEM_FIXED, eax
   .IF eax == NULL
       jmp err
   .ENDIF
   mov blabla, eax   ; Address of our small buffer
   mov eax, strlen
   add eax, 1 
   invoke RtlZeroMemory, blabla, eax
                         
   
   
               
   mov ecx, memptr         ; address of loaded file
   xor eax, eax            ;set eax to 0 with 1 instruction =)))
   xor ebx, ebx
   xor edx, edx
   mov bl, byte ptr[oldstr]; our first letter "R" =)
   
   ; Ocigledno se i edx i ecx menjaju kroz ove funkcije tako da ne znam kome od njih 
   ; da jebem mater... ahhhhhhhh e to mi ide na k**** kad se funkcije jebu sa registrima 
   ; pa ih ne vracaju na mesto,,, ali zato uvodim dve nove variable(uostalom kad su ih vracali) 
   ; secx == save ecx
   ; sedx == save edx 
   ; da sacuvam ova dva registra pre nego sto mi program padne... Jebote covece koji jebeni trip
   ; ocu CCCCCCCCCCCCCCCCCCCCCCCC nazad.....
   ; etoooooooooooooooooooooo
   
   
   .WHILE edx != fsize
      mov sedx, edx
      mov secx, ecx
      .IF byte ptr[ecx] == bl  ;we got 1st letter, lets check for whole word
         invoke RtlMoveMemory, blabla, ecx, strlen
         invoke lstrcmpi, blabla, ADDR oldstr
         .IF eax == 0   ;we have 2 same stringz!
             xor eax,eax
             mov eax, edx ; edx is our offset counter
             add eax, memptr ; we get memptr+offset now (string in memptr)
             invoke RtlMoveMemory, eax, ADDR newstr, strlen ;change our stringz
          .ENDIF
          
       .ENDIF
      mov edx, sedx
      mov ecx, secx
      inc ecx           ;increment memory pointer
      inc edx           ;increment WHILE counter, i nas offset takodje...       
         
   .ENDW
   invoke SetFilePointer, hFile, 0, NULL, FILE_BEGIN
   
   invoke WriteFile, hFile, memptr, fsize, ADDR bwrite, NULL   
   .IF eax == NULL
       jmp err
   .ENDIF
   
   invoke GlobalFree, blabla
   invoke GlobalFree, memptr
   invoke CloseHandle, hFile
   invoke wsprintf, ADDR msgTx, ADDR format, ADDR oldstr, ADDR newstr, ADDR file
   invoke MessageBox, NULL, ADDR msgTx, ADDR msgT, MB_OK
   .IF eax == IDOK   ; samo iz zajebancije gledam da li je pritisnuto jedino raspolozivo dugme =)
   .ENDIF
   invoke ExitProcess, NULL
err:
    invoke MessageBox, NULL, ADDR errTx, ADDR errT, MB_ICONWARNING
    invoke ExitProcess, NULL   
end start


A da ovaj djavo samo radi sa .txt filovima...

E ono sto me ubija jeste da li u windows api ima nesto slicno sa memcmp iz C jezika?
Ako ima dajte recite ubi se trazeci to i morao sam da se okrenem samo *.txt filovima da se ne bi smarao i pisao svoj memcmp sto me iskreno mrzi i smara jel sam sve zaboravio... pa sam zato pribegao koriscenju lstrlen funkcije...
i da li ima prokleti memcmp ili stogodj slicno medju APIima???

dajte neki savet gde sam pogresio jer stvarno se vise niceg ne secam o asm programiranju =(((

poz...

ps A da ovaj /masm32/progz/a.txt je neki file koji je pun Resource reci pa sam njih prve uhvatio kao primer koje se menjaju i oldstr i newstr su iste duzine, malo sam koristio " "(razmak) da ih ucinim iste duzine =))))))
 
Odgovor na temu

zvrba
The Lord of Chaos

Član broj: 31716
Poruke: 105
*.fina.hr.



Profil

icon Re: Evo jedan taze napisan kod =)))11.11.2004. u 06:53 - pre 236 meseci
A kaj ce ti memcmp API.. to je u ASM trivijalno: repe cmpsb
u esi i edi stavis adrese dva bloka memorije, u ecx njihovu duljinu i kazes repe cmpsb
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
195.252.86.*



+1 Profil

icon Re: Evo jedan taze napisan kod =)))11.11.2004. u 10:59 - pre 236 meseci
Znam da je imalo tako nesto, ali buduci da nisam ukljucio nijedan (C/asm) prog jezik vise od 3 godine, veruj mi ne secam se vise niceg...
cak i dok gledam neke kodove ovde sto sam pisao, pitam se da li sam ih doista ja pisao jer se ama bas niceg ne secam =(

al u svakom slucaju hvala =)
 
Odgovor na temu

Pera_Anarhista
Autonomija

Član broj: 3473
Poruke: 113
*.ethz.ch.



Profil

icon Re: Evo jedan taze napisan kod =)))11.11.2004. u 12:54 - pre 236 meseci
ima, cinimi se CopyMemory...
nema mira, nema pravde

http://www.anarchy-serbia.tk
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
195.252.86.*



+1 Profil

icon Re: Evo jedan taze napisan kod =)))11.11.2004. u 21:43 - pre 236 meseci
nije CopyMemory =) to je za kopiranje

ali problem resen sa repe cmpsb i rep movsb
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
*.vdial.verat.net.

ICQ: 44582291


+58 Profil

icon Re: Evo jedan taze napisan kod =)))11.11.2004. u 22:39 - pre 236 meseci
API fje sacuvaju samo esi edi i ebx (naravno i esp i ebp), za ove ostale registre nemoj da racunas da ce biti isti posle poziva. Btw (mrzi me da naprezem mozak :))sta radi ovaj program?
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.



Profil

icon Re: Evo jedan taze napisan kod =)))12.11.2004. u 01:41 - pre 236 meseci
Citat:
zvrba: A kaj ce ti memcmp API.. to je u ASM trivijalno: repe cmpsb
u esi i edi stavis adrese dva bloka memorije, u ecx njihovu duljinu i kazes repe cmpsb


I prije toga jedan "cld" jer neki gluplji API-ji znaju postaviti direction flag sto zna uzrokovati vrlo gadne bugove :)

Kao sto rece mikky eax, ecx i edx su podlozni unistavanju tokom poziva. S tim da nerijetko i neke callback fje (recimo kad ides napraviti enumeraciju aktivnih prozora) znaju unistiti i ebx, tako da se pazi i toga.. ako si paranoican u invoke makro ugradi pushad i popad :))

ni meni se ne da citati kod ovako kasno, da stvarno, sta ovaj program radi? :)
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
195.252.86.*



+1 Profil

icon Re: Evo jedan taze napisan kod =)))12.11.2004. u 15:12 - pre 236 meseci
Ma kod otvara jedan file a.txt trazi rec "Resource" i menja je sa "c0mrad- " i to je to =)
nesto ono tipa kao na unixu memap() (ili bese mapfile ne secam se vise) memcmp() memcpy() kombinacija =)

poz
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: Evo jedan taze napisan kod =)))12.11.2004. u 15:17 - pre 236 meseci
Sta ce vama pravnicima asembler? Prosirujete oblast delovanja? :P
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
80.93.230.*

ICQ: 60630914


+1 Profil

icon Re: Evo jedan taze napisan kod =)))12.11.2004. u 17:37 - pre 236 meseci
opa vojo, nice to see you again ;)
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
195.252.86.*



+1 Profil

icon Re: Evo jedan taze napisan kod =)))12.11.2004. u 21:21 - pre 236 meseci
Pa da Gojko moramo i mi da budemo informisani u sve tokove =)
Kako mislis da donesemo zakon u cyberkriminalu ako ne poznajemo tematiku =)

Caboom -- poz igore, malo svratio i ja nesto da pogledam =)
 
Odgovor na temu

[es] :: Asembler :: Evo jedan taze napisan kod =)))

[ Pregleda: 2808 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.