Nu ska jag försöka mig på en guide

Jag valde en PI server för att det ska gå så snabbt som möjligt (vet sen tidigare hur den ser ut och fungerar).
Program som kan tänkas vara användbara är:
* PEiD
* LordPE
* OllyDbg
* någon sorts av hexeditor
Först och främst letade jag upp en codecave med PEiD och hittade en på offset 0x26E. Detta ska bli den nya entrypointen där XOR-rutinen ska ligga.
Öppna upp filen i OllyDbg och gå till den nya entrypointen (notera att imagebasen måste adderas på offsetet, så det blir 0x40026E i mitt exempel). Så; ctrl+g: 40026E.
Här ska xor-rutinen skrivas in, pseudokod:
CODE
mov eax,%STARTADDR%
Loop:
xor byte ptr [eax],0A
inc eax
cmp eax,%ENDADDR%
jnz Loop
jmp %OEP%
Men innan vi skriver in koden måste vi veta %startaddr%, %endaddr% och %OEP% (original entry point).
Var koden börjar ser man ganska lätt i OllyDbg om man tittar vid OEP:
CODE
00400208 >/$ B8 00044000 MOV EAX,original.00400400
0040020D |. FFD0 CALL EAX
0040020F |. 6A 00 PUSH 0 ; /ExitCode = 0
00400211 \. E8 00000000 CALL <JMP.&kernel32.ExitProcess> ; \ExitProcess
Alltså 0x00400400! Tittar man i LordPE så ser man att det är just där .data-sektionen börjar (LordPE -> PE-editor -> Sections).
Slutadressen är alltså startadressen + längden av .data (fuskar lite då jag vet det sen innan, men egentligen spelar det ingen roll om man inkluderar hela sektionen eller inte. Bara man inte överskrider andra sektioner utan att veta vad de gör.) Längden av .data ser man också i sektionsvyn i LordPE, under kolumnen "VSize" (virtualsize).
OEP ser man också i LordPE.
OBS: Längden av .data varierar beroende på de inställningar man valde när man byggde pi-servern!
Så koden vi ska skriva in på offset 0x40026E är:
CODE
mov eax,400400
xor byte ptr [eax],0A
inc eax
cmp eax,4016D2
jnz 400273
jmp 400208
Så öppna upp OllyDbg igen och hoppa till (ctrl+g) 0x40026E och välj Assemble (eller mellanslag) och börja knappa in koden (den är såklart annorlunda för er som har använt andra inställningar än jag när ni byggde pi-servern.)
Efter detta måste ni markera det ändrade området och välja Copy to executable -> Selection. Sedan i det nya fönstret välj Backup -> Save data to file.
Nu måste man ändra Entrypointen på den nyskapade filen genom LordPE -> PE editor -> Entrypoint: 0000026E -> Save.
Till sist ska bara .datasektionen XOR:as med 0x0A vilket jag gjorde med Hex Workshop. Markera från offset 400 (där .data börjar) ner till offset 16D2 där .data slutar (VSize) och välj Tools -> Operation -> XOR... -> 8Bit unsigned byte, Hex: 0A, Selection -> OK.
Nu borde det fungera om ni gjort rätt ("rätt" betyder inte copypaste, ni måste räkna ut era egna adresser och längder!).
Originalfilen:
http://www.virustotal.com/sv/analisis/e023...bceec932a56c511Den ändrade filen:
http://www.virustotal.com/sv/analisis/f37e...b88f481cdc0d274