PUSHAD
MOV EDX, xxx (xxx = lungimea codului)
@blabla: (label pentru revenire de la un JMP)
MOV EAX, ep (EP=Entry Point, adresa de pornire a executiei programului)
ADD EAX, EDX
MOV EBX, [DS:EAX]
XOR EBX, 5
MOV [DS:EAX], EBX
DEC EDX
TEST EDX
LOOPNZ @blabla
POPAD
In mare parte, programul e bun. Ash veni insa cu nishte precizari:
MOV EAX, ep - daca e decriptor de cod executabil sau unpacker nu ishi cunoashte adresa din memorie deci trebuie sa o afle (call $+1 / pop eax / lea eax,[eax+delta] - asta ar fi un exemplu, de obicei se foloseshte ebp). Mai sunt si cazuri in care packerul modifica adresele direct in instructziuni, dar de obicei nu. MOV [DS:EAX], EBX - DS: nu se foloseshte in programarea pe 32 de bitzi, nu este segment ci selector. Pentru a face XOR cu 5 nu este nevoie sa citeshti / scrii un DWORD (in cazul in care faci asta... ciclul trebuie sa se execute de "xxx" - 3 ori altfel rishti page fault daca programul tau se termina la limita paginii alocate) TEST EDX - test este o instructziune cu 2 parametri -> test edx,edx - aceasta ar fi o varianta LOOPNZ - loop / loope / loopne - se folosesc cu ecx, nu edx ca si contor ("c" din "ecx" vine de la "counter". Cu toate acestea, programul merge si cu loopnz DACA in ecx este un numar mai mare ca in edx (pentru ca LOOP* decrementeaza pe ecx)
O varianta ar fi:
Code:
push ecx
push ebp ; nu are rost sa umplem stiva cu toate registrele
call delta1
delta1=$ ; directiva pentru asamblor
pop ebp
mov ecx,size_of_code
l_start:xor byte ptr[ebp+ecx+delta-1],5
loop l_start
pop ebp
pop ecx
delta=$-delta1 ;directiva pentru asamblor
; presupunem ca urmeaza codul decriptat
Shocker Super Moderator Din: localhost
Postari: 2084
Ce am postat eu intentionam sa para a ceva in genul unui pseudocod, pentru intelegerea parcurgerii continutului programului, si nu un cod "ready-to-be-compiled". Intr-adevar, ai dreptate, atunci am scris totul in graba, thanks pentru completarile si corectarile facute
salut am vazut acest subiect..stiti ce ar fi tare ?sa facetzi /sa trimiteti intro sala de net si toti care intra pe messenger sa iti trimita parola pe e-mail..ar fi super..ma poate ajuta sa fac si eu asa ceva...sa stiiti ca am terminat clasa I (adica scamul) ma gasiti pe emailu meu multumesc mult <-== cei care se pricep sonicmu @ yahoo.com fara spatiu multumesc anticipat
Ma oamenilor daca chiar vreti sa faceti un virus,troian nedetectabil folositi unul din programele OllyDebugger sau Themida...Cu aceste programe va faceti sigur un virus nedetectabil...Este o exceptie...Il detecteaza doar antivirusii cu licenta...daca ma intrebati de un tutorial va zic ca eu nu il mai am in calc pt k am terminat de creat un troian si nu mai am nevoie de altuldaca chiar vreti cu adevarat studiati si voi...
Cum sa faci un virus nedetectabil - modalitate usoara – poza de shadow_of_dead92, in Virus/Trojan · 4.5KB