Author Topic: Loader - NOP  (Read 1299 times)

Runner

  • Guest
Loader - NOP
« on: September 09, 2005, 10:53:48 PM »
Čau v?em! Jsem začátečník a nevím, jak v loaderu (třeba RPP) napsat instrukci NOP. Do skriptu napí?u adresu, starou hodnotu a novou, tedy 90 (nop) a rpp hlásí chybu. Díky moc za rady. Runner ;)

Master

  • [t4C]newbie child
  • VIP
  • *****
  • Posts: 615
Loader - NOP
« Reply #1 on: September 10, 2005, 08:42:23 AM »
Zdarec runnere,tak na tvou otazku.RPP je docela divny loader a ja osobne ho nemam moc rad.Ale jinak,u neho,jestli si to nepletu(pisu z hlavy) se dela scriptovaci soubor.V nem je urcen target,a pak virtualni adresa a jeji hexa prepis.Tedy asi takovy tvar:

Target:target.exe

4256C5:7D/atd/atd/atd

To pred dvojteckou,je adresa,kde chces patchovat v pameti,to za ni sou jiz hodnoty,kterymy se ma puvodni hodnota na te adrese prepsat.Tyto hodnoty se pisou v hexa tvaru(v olly si je zjistis,jsou mezi kodem a adresou radku),tedy tam nemuze byt napr.

JMP xxxxxxx ale jeho hexa prepis

Pak uz jen zkompilujes script v exe soubor pomoci rpp.

Jinak spise doporucuju si najit(myslim,ze odkazy sou nekde na foru) patchery a loadery dUP a dUP2.Pomoci nich si muzes vytvorit jak patcher tak i loader a maji mnohem prijemnejsi zachazeni a hodne zajimavejch fci,kde asi nejpouzivanejsi je porovnani puvodniho a cracknuteho souboru a z vypise jejich zmeny a z nich uz primo udela patch nebo loader.

A jeste doporucuju,zda li ji nemas si poridit knizku cracking bez tajemstvi od(myslim) tome?e zemaka alias ZemoZ

Iron Screw

  • [TiME4CRiME]
  • Administrator
  • Senior Member
  • *****
  • Posts: 260
    • http://ironscrew.wz.cz
Loader - NOP
« Reply #2 on: September 10, 2005, 10:32:48 AM »
No trochu bych opravil nepresnosti. Kniha se jmenuje CRACKING bez tajemství a je od Jakuba Zemánka. (ZemoZ)

Ted k RPP:
Ukazka scriptu
-----------------------------------------------
; Za strednikem muze byt napsan nejaky komentar

F=Target.exe:    ; Soubor ktery se ma patchnout
O=Loader.exe:           ; Nazev vytvoreneho exe

P=4014b2/74,02/72,00:   ; Takhle se zapisuje
p=401202/85,c0/b0,01:

P=ADRESA/Co se bude menit / Na co se bude menit :

$         ; Konec scriptu
---------------------------------
A co presne hlasi za chybu? Koukni, jestli ti nechyby dvojtecky na konci radku nebo $ na konci scriptu.
« Last Edit: September 10, 2005, 10:43:08 AM by Iron Screw »
TiME AND LiFE ARE ETERNAL - REVERSE ENGINEERING IS WAY OF LiFE
SO ISN'T CRIME

[TiME4CRiME]

Runner

  • Guest
Loader - NOP
« Reply #3 on: September 10, 2005, 10:59:28 AM »
Knihu mám. Jde mi o to, jak mám napsat NOP do skriptu. Chyba: unequal amount of search or replace bytes. Script vypadá takto:

;Nějaký program :)

F=xXx.exe:
O=xXx_loader.exe:
P=0043F510/FF,D7/90: ;je to CALL instrukce a chci ji vynopovat
$

Pokud to vynopuju v Olly, tak tam vydím třeba místo jednoho callu dvě instrukce nop. Díky

llAmElliK

  • [TiME4CRiME]
  • Administrator
  • VIP
  • *****
  • Posts: 960
Loader - NOP
« Reply #4 on: September 10, 2005, 12:04:47 PM »
Hi,

nic proti RPP ani autorovi R!SC - ale nedávno jsme s DARKERem vedli debatu o tom kde jsou "strarý známý" jako +ORC atd. - a do?li jsme k závěru,?e i kdyby se dneska objevili zpátky tak pokud nesledujou vývoj,který jde neuvěřitelným způsobem kupředu (mám namysli ochrany softwaru) - neměli by ji? téměř ?anci!!!
Já osobně nejsem v "kurzu"tak dlouho jako např.Z!80 a jiní "ostřílení mistři RE"ale za těch pár málo let jsem zaznamenal (a jiný zcela jistě taky) obrovský zlom v ochranných mechanismech aplikací - téměř tytam jsou pryč doby kdy se vymý?leli závratné algoritmy ke generování kodu a stejně stačil jeden patch - dneska se vývoj ubírá směrem k "packerům" PE crypterům a ?ifrerům SMC kodu apodobným "zvrhlostem" - je to jednodu??í a ve své podstatě i laciněj?í ne? si několik dní lámat hlavu nad algoritmem samotného programu.
Co tím chci říct - RPP je vhodný na to abys alespoň trochu pochopil "jak to vlastně funguje" ov?em do dne?ního světa RE se hodí asi jako ?koda 100 - pěkná klasika ov?em - nestíhá.
Je zbytečné mořit se dopisováním a vymý?lením "kodu" pro scriptu patcheru kdy? nalezne? u? hotové patchery ,které udělají práci za tebe - a navíc si poradí i s některými packery.
Myslím ?e podstatnou částí dne?ního RE je i pou?ívání stále lep?ích a lep?ích nástrojů - vývojáři mají nové zbraně a nelze proti nim bojovat s cepy a sudlicemi.
Já osobně preferuji dUP (i kdy? ne jeho poslední verze) a nebo aPE - myslím ?e např.Master se s dUP spřátelil velmi brzo.
Nenechávej se odradit,klidně pracuj s čím chce? toto je jen moje malá rada.

A co se týče oněch "NOPů" a jejich počtu - instrukci by si měl přepsat stejně dlouhou instrukcí - to znamená ?e tam bude? mít tolik NOP instrukcí aby se ti vyrovnalo to co si editoval.
A je?tě něco instrukce NOP se dá snadno nahradit exemple instrukcí INC EAX apodobně (smaozřejmně 2 NOPy);)
« Last Edit: September 10, 2005, 12:33:54 PM by llAmElliK »
TiME AND CRiME ARE ETERNAL-REVERSE ENGINEERiNG iS MODERN PHiLOSOPHY AND iSN'T CRiME
[TiME4CRiME]

Iron Screw

  • [TiME4CRiME]
  • Administrator
  • Senior Member
  • *****
  • Posts: 260
    • http://ironscrew.wz.cz
Loader - NOP
« Reply #5 on: September 10, 2005, 12:20:59 PM »
F=xXx.exe:
O=xXx_loader.exe:
P=0043F510/FF,D7/90,90: ;je to CALL instrukce a chci ji vynopovat
$
a co takhle?
Podle me ti tam chybela jeste jednou 90.
---------------------------------
Rada: ... otevri to v OLLY ... 2x klini na ten CALL ... napis NOP a koukni hned ve vedlejsim (levem - hexa) sloupci kolik se toho zmenilo! a to pak prepis do toho scriptu.
Nejdriv na te adrese opis celej radek v tom hexa sloupci (FF,D7 .... ) a pak za "/" napis 90,90,90 ... tolik kolik je zapotrebi.
Ja kdyz jsem nekde NOPnul CALL tak jsem mel nejmin 5x NOP tzn. 90,90,90,90,90 .... priklad: P=0043F510/FF,D7,5A,98,A3/90,90,90,90,90:
« Last Edit: September 10, 2005, 12:26:35 PM by Iron Screw »
TiME AND LiFE ARE ETERNAL - REVERSE ENGINEERING IS WAY OF LiFE
SO ISN'T CRIME

[TiME4CRiME]

Master

  • [t4C]newbie child
  • VIP
  • *****
  • Posts: 615
Loader - NOP
« Reply #6 on: September 10, 2005, 12:22:47 PM »
Quote from: llAmElliK
Hi,

nic proti RPP ani autorovi R!SC - ale nedávno jsme s DARKERem vedli debatu o tom kde jsou "strarý známý" jako +ORC atd. - a do?li jsme k závěru,?e i kdyby se dneska objevili zpátky tak pokud nesledujou vývoj,který jde neuvěřitelným způsobem kupředu (mám namysli ochrany softwaru) - neměli by ji? téměř ?anci!!!
Já osobně nejsem v "kurzu"tak dlouho jako např.Z!80 a jiní "ostřílení mistři RE"ale za těch pár málo let jsem zaznamenal (a jiný zcela jistě taky) obrovský zlom v ochranných mechanismech aplikací - téměř tytam jsou pryč doby kdy se vymý?leli závratné algoritmy ke generování kodu a stejně stačil jeden patch - dneska se vývoj ubírá směrem k "packerům" PE crypterům a ?ifrerům SMC kodu apodobným "zvrhlostem" - je to jednodu??í a ve své podstatě i laciněj?í ne? si několik dní lámat hlavu nad algoritmem samotného programu.
Co tím chci říct - RPP je vhodný na to abys alespoň trochu pochopil "jak to vlastně funguje" ov?em do dne?ního světa RE se hodí asi jako ?koda 100 - pěkná klasika ov?em - nestíhá.
Je zbytečné mořit se dopisováním a vymý?lením "kodu" pro scriptu patcheru kdy? nalezne? u? hotové patchery ,které udělají práci za tebe - a navíc si poradí i s některými packery.
Myslím ?e podstatnou částí dne?ního RE je i pou?ívání stále lep?ích a lep?ích  nástrojů - vývojáři mají nové zbraně a nelze proti nim bojovat s cepy a sudlicemi.
Já osobně preferuji dUP (i kdy? ne jeho poslední verze) a nebo aPE - myslím ?e např.Master se s dUP spřátelil velmi brzo.
Nenechávej se odradit,klidně pracuj s čím chce? toto je jen moje malá rada.


Jojo,rychle se z nej stal muj best friend  :D

jinak:

Quote
Knihu mám. Jde mi o to, jak mám napsat NOP do skriptu. Chyba: unequal amount of search or replace bytes. Script vypadá takto:

;Nějaký program

F=xXx.exe:
O=xXx_loader.exe:
P=0043F510/FF,D7/90: ;je to CALL instrukce a chci ji vynopovat
$

Pokud to vynopuju v Olly, tak tam vydím třeba místo jednoho callu dvě instrukce nop. Díky


Tobe poradim,pouzij bud dUP anebo primo k tomu NOP,musi vynopovat VSECHNY INSTRUKCE!!!!
(ted ty hex instrukce muzou byt jine,nevim je presne)
Napr: 75FE JNE xxxxxxxxx (tohle je v ollym)
a jak ty si rikal,ze po nopovani mas najednou 2 nopy,to proto,ze se musi nopnout vsechny hex hodnoty
75FE jne xxxxxxxxx
9090 NOP

Snad si to pochopil.

CZerezpiCZkin

  • Junior Member
  • ***
  • Posts: 181
Loader - NOP
« Reply #7 on: September 10, 2005, 05:15:08 PM »
Teda, neviem ale na take zakladne veci RPP staci (a pokial je Runner len zaciatocnik, ako tvrdi, tak by aj jemu mal postacovat). Ja osobne som si RPP dost oblubil. dUP je fajn, ale nemozem mu akosi prist na chut. Co sa tyka toho loaderu, ako tu bolo uz spomenute, treba prepisat CELU hodnotu povodnej instrukcie teda pocet povodnych a pocet upravenych bytov sa musia zhodovat... (Pekne sa to da odsledovat v Ollym)
CZpCZ

Runner

  • Guest
Loader - NOP
« Reply #8 on: September 10, 2005, 10:36:04 PM »
Díky moc V?EM! U? mi to funguje. Jsem opět o něco chytřej?í. Zatím jsem NOP nepotřeboval. Jste tady fajn lidi. ;) Nemáte někdo zdroják na vlastní patch napsaný v Delphi? Občas něco sesmolím a tohle by byla dobrá zku?enost. Kdy? mi přilo?íte nápovědu co, kdy, kde a jak se dělá, budu moc spokojený.

Master

  • [t4C]newbie child
  • VIP
  • *****
  • Posts: 615
Loader - NOP
« Reply #9 on: September 11, 2005, 08:01:45 AM »
Co vim,tak jediny patcher(ne loader) ma napsany joe v MASM32

llAmElliK

  • [TiME4CRiME]
  • Administrator
  • VIP
  • *****
  • Posts: 960
Loader - NOP
« Reply #10 on: September 11, 2005, 09:47:28 AM »
Quote from: CZerezpiCZkin
Teda, neviem ale na take zakladne veci RPP staci (a pokial je Runner len zaciatocnik, ako tvrdi, tak by aj jemu mal postacovat). Ja osobne som si RPP dost oblubil. dUP je fajn, ale nemozem mu akosi prist na chut. Co sa tyka toho loaderu, ako tu bolo uz spomenute, treba prepisat CELU hodnotu povodnej instrukcie teda pocet povodnych a pocet upravenych bytov sa musia zhodovat... (Pekne sa to da odsledovat v Ollym)
Co je základní věc???:confused: - patchnout JNZ (JE) na přihlouplým crackme IF a ELSE????
Neznamená ?e kdy? je někdo "začátečník" ?e se musí zdr?ovat pou?íváním neadekvátních nástrojů - a i od toho tady to je ,aby se ka?dej naučil pou?ívat nástroje - i v tom blbým cme stačí jeden timer nebo CRC kontrola a sem zvědav jak to "začátečník" obejde v RPP.
Pokud chce? něčeho dosáhnout je víc ne? důle?itý umět pou?ívat ka?dej nástroj v celé jeho síle - např Olly - kolik lidí zná jeho mo?nosti tak ?e je doká?e v?echny vyu?ít???
Ne - je blbost zabývat se něčím co je dneska k ničemu pokud chce? "dr?et krok".
A dal?í věc - pokud někde (v patcheru) pou?ije? NOP a ten tam být nemá program ho mů?e detekovat - i s tím sem se setkal - tak?e sna?it se neNOPovat.........
Je nutné si uvědomit ,?e Zemánkova kniha vy?la zhruba před 2-3 lety - pou?iju pár příkladů krom ji? zmiňovaného RPP:

Jako "best" debugger je zde zmiňován SoftIce - a já tvrdím,?e SoftIce je mrtev!!!! - naučme se vyu?ívat v?ech mo?ností Olly a,psát do něj scripty a pluginy a máme "FREE" debugger kerý svými mo?nostmi a zároveň "bezpečností"pro system (neboť jde o RING3 debugger) Sice polo?il u? dávno......(netvrdím,?e se nemá Sice u?ívat ,ale projděte si boardy s RE a zjistíte ?e 80% "začátečníků" ho neumí ani nainstalovat)
W32Dasm - skvělý nástroj a klasika v disassemblerech - pro základní "nakouknutí" do výpisu statického kodu postačuje - bohatě ,ale co kdy? jsou pou?ity antidassm triky? - pak je tu IDA - ov?em někdo z lenosti a z neznalosti (já taky) IDU nepou?ívá - ale vím ,?e ten kdo  rozumí kodu natolik aby mu stačil pohled na výpis doká?e z IDA vy?dímat max.počet informací ani? by spustil debugger.
« Last Edit: September 11, 2005, 10:18:38 AM by llAmElliK »
TiME AND CRiME ARE ETERNAL-REVERSE ENGINEERiNG iS MODERN PHiLOSOPHY AND iSN'T CRiME
[TiME4CRiME]

Iron Screw

  • [TiME4CRiME]
  • Administrator
  • Senior Member
  • *****
  • Posts: 260
    • http://ironscrew.wz.cz
Loader - NOP
« Reply #11 on: September 11, 2005, 10:21:53 AM »
Jo jo jak rika llAmElliK ... lepsi neNOPovat. Skoro vzdycky se to da udelat bez NOP.
Tak LOADER v Delphi neznam, ale vim jak udelat PATCHER. Staci tato procedura.

procedure Patch;
const patch : array [1..1] of record
posunuti : Longint;  //Posunuti v souboru
zapis : Byte;          //Byte ktery se zapise
end = ((posunuti:$EA610; zapis:$85));  // Tady staci menit konstanty
 
var ch :char;
i : byte;
f : file;


begin
AssignFile(f,'Target.exe');  //Soubor ktery budem PATCHOVAT
{$I-}
Reset(f,1);
{$I+}
if IOResult<>0 then begin
                           //Pokud neexistuje muzete neco vypsat atd.
                           
                    end else begin
for i:=1 to 1 do begin   // FOR - pro pripad kdybychom potrebovali vic uprav
Seek(f,patch[1].posunuti); //Presuneme se na misto patche
ch:=Char(patch.zapis);  
BlockWrite(f,ch,1);           // Zapiseme hodnotu v "ch" ($85)
                            end;
end;

end;

-------------------------------------------------------------
Urcite to pujde i jinnak.... Tak si s tim pohrejte a uvidite sami.
TiME AND LiFE ARE ETERNAL - REVERSE ENGINEERING IS WAY OF LiFE
SO ISN'T CRIME

[TiME4CRiME]

joe

  • Newbie
  • *
  • Posts: 46
Loader - NOP
« Reply #12 on: September 11, 2005, 11:10:07 AM »
Musim sa priznat, ze obcas RPP este pouzivam. Je mi jasne, ze sa s tym zdrzujem. Lepsie by bolo venovat sa loaderu, ktory ma viac moznosti a naucit sa tie moznosti vyuzit. Jeden vyznam vsak ma aj RPP. Je pomerne jednoduchy a uz nejaky cas sa chystam odkrokovat si ho, aby som pochopil sposob ako pracuje. Mozno by som to mohol skusit aj s lepsim loaderom, no chcem pochopit ten zaklad.

Runner

  • Guest
Loader - NOP
« Reply #13 on: September 11, 2005, 04:49:42 PM »
Pou?ívání RPP mi u? je celkem jasné. Adresa/stará hodnota/nová hodnota. Ale kdy? by jsem chtěl udělat patch, tak jsem bezradnej. Spustil jsem Patch Creation Wizard a hle. Zjistil jsem, ?e toho moc o patchování nevím. Mů?ete mi někdo odkázat na poučnou literaturu, co se týká patchování. Pokud mo?no v če?tině. Díky

Myllan

  • Newbie
  • *
  • Posts: 25
Loader - NOP
« Reply #14 on: September 11, 2005, 04:49:40 PM »
2  llAmElliK
Quote
ještě něco instrukce NOP se dá snadno nahradit exemple instrukcí INC EAX apodobně (smaozřejmně 2 NOPy)

Toto bych moc nedoporucoval; casto se stava, ze se hodnota v eax nekde v aplikaci kontroluje, jeji zmena muze mit i dost fatalni nasledky; lepe je parovat prikazy INC EAX a DEC EAX, protoze tak se hodnota eax nemeni :)