Taisam zālītes paši

Šķiet, ka katrs no mums kaut reizi ir saskāries ar programmām, kuras pēc kāda laiciņa pieprasa reģistrēties (samaksāt), ja gribam turpināt tās lietot. Šādā gadījumā vairums no mums sāk meklēt zālītes (crack) attiecīgajai programmai. Protams, šeit der atgādināt, ka par šādu rīcību draud kriminālatbildība. Tā ir dzīves realitāte un šādi rīkojamies ne tikai mēs nabadzīgajā Latvijā, bet ne par to būs šis raksts. Daudziem nav pat minimāls priekštats par to kā tiek radītas šīs zālītes, tāpēc nolēmu mazliet ieviest skaidrību šajā sakarā.

Ja kāds jau ir nodarbojies ar zālīšu pagatavošanu, tad iespējams viņam šis raksts nebūs īpaši interesants un noderīgs. Visi pārējie, kam tas interesē, turpina lasīt.

Vispirms pastāstīšu par biežāk izmantotajām programmām zālīšu izgatavošanai. Rūdītākie crackeri izmanto tikai disassembler un kādu hex editoru, bet iesācējiem vairāk piemērots būtu kāds debuggers. Galvenā atšķirība starp disassembler un debugger ir, ka ar disassembler palīdzību iespējams statiskā veidā aplūkot programmas mašīnas kodus assembler programmēšanas valodā, bet ar debugger palīdzību iespējams sekot tiem līdzi kamēr programma darbojas. Vecajos Win9x laikos labākais debuggers vienozīmīgi bija SoftICE. Diemžēl uz Windows 2000/XP, šis debuggers nedarbojas, tāpēc par SoftICE daudz nerunāšu. Manuprāt, ļoti labs un ērts ir OllyDbg debuggers, ko arī izmantošu. Izrāvums no OllyDbg readme faila:

[q]OllyDbg is a 32-bit assembler-level analyzing debugger for
Microsoft(R) Windows(R) with intuitive interface. Emphasis on binary
code analysis makes it particularly useful in cases where source is
unavailable. It predicts contents of registers, recognizes procedures,
API calls, switches, tables, constants and strings, locates routines
from object files and libraries, allows custom labels and comments in
disassembled code, writes patches back to executable file and more.[/q]

OllyDbg var dabūt šeit – http://home.t-online.de/home/Ollydbg

Kā dissasembleru izmantošu W32Dasm.

Veco labo HIEW (Hackers View) drošvien zin katrs datorlietotājs vēl no DOS laikiem. Īss izrāvums no HIEW readme faila:

[q]Basically HIEW is a hex viewer for those who need to change some bytes
in the code (usually 7xh to 0EBh). Hiew is able to view unlimited length
files in text/hex modes and in Pentium(R) Pro disassembler mode.[/q]

Ir vēl dažas noderīgas programmas, bet šoreiz mums tās nebūs nepieciešamas.

Zālītes parasti iedalās šādi – patch, serial un keygen. Patchus izveidot ir visvieglāk, bet tie nav īpaši universāli, jo tie fiziski pamaina programmas EXE vai DLL failu. Pamainoties programmas versijai mainās arī adreses, un ir jāveido jauns patch. Gatavi seriālie numuri un seriālo numuru ģeneratori ir daudz universālāki, jo tie der arī citām programmas versijām (protams, ja jaunajā programmas versijā nav nomainīta aizsardzība) un nav nepieciešams fiziski mainīt failu.

Runājot par programmu aizsardzību, jāatzīst, ka nav tādas aizsardzības, ko nevarētu apiet vai uzlauzt. Viss ir atkarīgs tikai no tā, cik liela ir vēlēšanās programmu uzlauzt. Visu ko ir izdomājis cilvēks, kāds cits cilvēks arī spēs apiet. Datorprogrammu izstrādātāji cenšas izdomāt ar vien jaunas metodes, kā aizsargāt savas programmas un nopelnīt naudiņu. Izplatītākās metodes ir – programmas izmantošanas laika ierobežojums un limitētas programmas iespējas. Lai programma strādātu bez ierobežojumiem autori piedāvā nopirkt unikālu seriālo numuru vai atslēgas failu.

Visvieglāk saprast kā tiek veidotas zālītes, ir no piemēriem. Tāpēc parādīšu kā tas notiek. Lai nerastos domstarpības, par piemēru ņemšu vienu vecu manis paša veidotu programmu ar primitīvu aizsardzību. Programmas nosaukums ir LatHack Audio Tag Editor un programmu drīkst izmantot 30 dienas. Pēc šī perioda ir vai nu jānopērk seriālais numurs, vai arī jāizdzēš tā no sava datora. Programmu var dabūt šeit.

Startējot programmu parādās šāds NAG logs (kaitinošs logs ar atgādinājumiem vai brīdinājumiem), kurš mums saka, cik dienas vēl šī programma darbosies.

Tagad mums vajadzētu noskaidrot ar kādu metodi ir paredzēts reģistrēt programmu. Uzspiežot uz pogas Register, atveras web pārlūks ar norādi uz web lapu, kurā mums jāmaksā par licenci. Tas mums nav vajadzīgs, tāpēc ielādējam programmu disassasemblerī W32Dasm. Aplūkojot String Data References mēs redzam, ka kaut kur ir jābūt reģistrācijas logam, kurā var ievadīt vārdu un seriālo numuru. Tā kā nospiežot pogu Register mums šis logs neatvērās, ir pamats domāt, ka ir jāpielieto kāda viltība, lai pie viņa tiktu. Šajā gadījumā mums ir vairāki pavedieni, kurus pārbaudīt. Viena no iespējām – apskatīties, kādi dialoga logi ir programmā, atrast mums interesējošo un noskaidrot, kā pie viņa tikt. Šoreiz mēs pieķersimies web lapas adresei, kura atveras, nospiežot pogu Register. W32Dasm atveram String Data References logu, atrodam “http://lathack.ogreland.lv/register.php” un 2x noklikšķinam ar peli. Mums parāda to vietu programmā, kurā tiek atvērta šī lapa. Paskatoties dažas līnijas augstāk mēs redzam GetKeyState() funkciju. Tas nozīmē, ka nospiežot pogu Register, programma pārbauda kādas pogas uz tastatūras ir nospiestas. Papētot kodu var redzēt, ka tiek pārbaudīti 3 taustiņi (SHIFT, CTRL, ALT). Ja kāds no taustiņiem nav nospiests, programma atver web lapu, ja visi ir nospiesti, parāda reģistrācijas logu.

Beidzot mēs esam tikuši pie reģistrācijas loga. Nospiežot pogu Register, parādās message box ar paziņojumu par nepareiziem datiem.

String Data References logā atrodam “Incorrect or incomplete information” un nonākam šeit:

Pievēršam uzmanību adresei 0040C872. (C) nozīmē, ka jump veikts ar nosacījumu. Nosacījums acīmredzot ir bijis, ka dati ir nepareizi. Ejam uz šo adresi un mēs redzam, ka pirms tam tiek izsaukta funkcija, kas pārbauda mūsu reģistrācijas datus. Ja funkcija atgriež 1, tad dati ir pareizi, ja 0, tad nepareizi.

Mēs veiksmīgi esam atraduši funkciju, kurā tiek pārbaudīti mūsu reģistrācijas dati. Lai uztaisītu patch mums tikai jāpanāk, lai šī funkcija vienmēŗ atgrieztu 1. Vispirms papētīsim šo funkciju un ļausim viņai uzģenerēt seriālo numuru mūsu vietā. 😉 Tagad ielādējam programmu debuggerī un uzliekam breakpointu uz adresi 0040C76C, startējam programmu un nonākam mūsu uzliktajā breakpointā, jo programma pirms palaišanas pārbauda reģistrācijas statusu. Šobrīd mums vēl nevajag šo funkciju, tāpēc spiežam F9 un turpinam programmu. Pielietojam viltību, kuru atklājām iepriekš, un atveram reģistrācijas logu. Ievadam savu vārdu, kuram jābūt vismaz 5 simbolus garam, un spiežam Register pogu.

Programma atkal tiek apstādināta un debuggerī parādās funkcija, kurai uzlikām breakpoint.

Aplūkojot kodu redzam, ka funkcija pārbauda vai niks ir pietiekami garš un uzģenerē seriālo numuru. Šo uzģenerēto numuru programma salīdzina (lstrcmp() funkcija) ar mūsu ievadīto numuru. Ja būsiet vērīgi, redzēsiet īsto seriālo numuru, kas tika uzģenerēts balstoties uz ievadīto niku. Principā zālītes ir gatavas. Pierakstam seriālo numuru, veram visu ciet un ievadam iegūtos datus reģistrācijas logā. Šoreiz seriālo numuru nebija grūti atrast, bet ne vienmēr tas ir tik viegli, tāpēc parādīšu, kā programmai vienmēr likt domāt, ka tā ir reģistrēta. Pievēršam uzmanību 3 koda rindiņām pēc lstrcmp() funkcijas izsaukuma. Kā jau noskaidrojām, ja šī funkcija atgriež 1, tad reģistrācija ir sekmīga. Mazliet palabosim kodu, lai šī funkcija vienmēr atgriež 1.

Šos labojumus varam veikt šeit pat debuggerī vai arī izmantot HIEW. Es šoreiz neizmantošu HIEW. Uzspiežam labo peles pogu un paņemam Copy to executable -> All modifications.

Atveras jauns logs un arī šajā logā uzspiežam labo peles pogu un izvēlamies Backup -> Save data to file.

Startējam modificēto versiju un redzam, ka programmai vairs nav nekādu ierobežojumu.

Kādā no nākošajiem rakstiem apskatīšu citas aizsardzības metodes un pastāstīšu, kā izveidot seriālo numuru ģeneratoru.

Kā jau minēju programmas aizsardzības uzlaušana ir pretlikumīga, tāpēc programmētāji izveido nelielas programmas (crackme), kuru vienīgais mērķis ir, lai tās uzlauztu. Ja būs interese, tad varētu arī Latvijā uzrīkot sacensības zālīšu pagatavošanā.

Es neuzņemos nekādu atbildību par šajā rakstā pieejamās informācijas ļaunprātīgu izmantošanu.

Raksta turpinājums – Keygen pagatavošana

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *

Datuve.lv – IT un Tehnoloģiju ziņas || Copyright © 2004-2020 || Kontaktinformācija: info@datuve.lv  || Contact Us