Sabtu, 30 Oktober 2010

SET MODEM

Modem di set sebagai Bridge:

-Username & password PPOE diterapkan di router (switch/HUB) .
-keuntungan:
+Router dapat diremote secara penuh dari WAN karena modem hanya melewatkan data saja.

Modem diset dengan port forwarding.
-Username &password DSL diterapkan di router .
-keutungan:
-Router aman dari hacker karena hanya port tertentu yang terbuka (port 80 http) .

Sabtu, 23 Oktober 2010

VIRTUAL PRIVATE NETWORK

VPN adalah singkatan dari virtual private network, yaitu jaringan pribadi (bukan untuk akses umum) yang menggunakan medium nonpribadi (misalnya internet) untuk menghubungkan antar remote-site secara aman. Perlu penerapan teknologi tertentu agar walaupun menggunakan medium yang umum, tetapi traffic (lalu lintas) antar remote-site tidak dapat disadap dengan mudah, juga tidak memungkinkan pihak lain untuk menyusupkan traffic yang tidak semestinya ke dalam remote-site.

Menurut IETF, Internet Engineering Task Force, VPN is an emulation of [a]
private Wide Area Network(WAN) using shared or public IP facilities, such as the Internet or
private IP backbones.VPN merupakan suatu bentuk private internet yang melalui public network
(internet), dengan menekankan pada keamanan data dan akses global melalui internet.
Hubungan ini dibangun melalui suatu tunnel (terowongan) virtual antara 2 node.

adalah suatu jaringan privat (biasanya untuk instansi atau kelompok tertentu) di dalam jaringan internet (publik), dimana jaringan privat ini seolah-olah sedang mengakses jaringan lokalnya tapi menggunakan jaringan public

VPN adalah sebuah koneksi Virtual yang bersifat private mengapa disebut demikian karena pada dasarnya jaringan ini tidak ada secara fisik hanya berupa jaringan virtual dan mengapa disebut private karena jaringan ini merupakan jaringan yang sifatnya private yang tidak semua orang bisa mengaksesnya. VPN Menghubungkan PC dengan jaringan public atau internet namun sifatnya private, karena bersifat private maka tidak semua orang bisa terkoneksi ke jaringan ini dan mengaksesnya. Oleh karena itu diperlukan keamanan data

Konsep kerja VPN pada dasarnya VPN Membutuhkan sebuah server yang berfungsing sebagai penghubung antar PC. Jika digambarkan kira-kira seperti ini

internet <—> VPN Server <—-> VPN Client <—-> Client

bila digunakan untuk menghubungkan 2 komputer secara private dengan jaringan internet maka seperti ini: Komputer A <—> VPN Clinet <—> Internet <—> VPN Server <—> VPN Client <—> Komputer B

Jadi semua koneksi diatur oleh VPN Server sehingga dibutuhkan kemampuan VPN Server yang memadai agar koneksinya bisa lancar.

lalu apa sih yang dilakukan VPN ini?? pertama-tama VPN Server harus dikonfigurasi terlebih dahulu kemudian di client harus diinstall program VPN baru setelah itu bisa dikoneksikan. VPN di sisi client nanti akan membuat semacam koneksi virtual jadi nanti akan muncul VPN adater network semacam network adapter (Lan card) tetapi virtual. Tugas dari VPN Client ini adalah melakukan authentifikasi dan enkripsi/dekripsi.

Nah setelah terhubung maka nanti ketika Client mengakses data katakan client ingin membuka situs www.google.com. Request ini sebelum dikirimkan ke VPN server terlebih dahulu dienkripsi oleh VPN Client misal dienkripsi dengan rumus A sehingga request datanya akan berisi kode-kode. Setelah sampai ke server VPN oleh server data ini di dekrip dengan rumus A, karena sebelumnya sudah dikonfigurasi antara server dengan client maka server akan memiliki algorith yang sama untuk membaca sebuah enkripsi. Begitu juga sebaliknya dari server ke Client

Keamanan Dengan konsep demikian maka jaringan VPN ini menawarkan keamanan dan untraceable, tidak dapat terdeteksi sehingga IP kita tidak diketahui karena yang digunakan adalah IP Public milik VPN server. Dengan ada enkripsi dan dekripsi maka data yang lewat jaringan internet ini tidak dapat diakses oleh orang lain bahkan oleh client lain yang terhubung ke server VPN yang sama sekalipun. Karena kunci untuk membuka enkripsinya hanya diketahui oleh server VPN dan Client yang terhubung. Enkripsi dan dekripsi menyebabkan data tidak dapat dimodifikasi dan dibaca sehingga keamananya terjamin. Untuk menjebol data si pembajak data harus melalukan proses dekripsi tentunya untuk mencari rumus yang tepat dibutuhkan waktu yang sangat lama sehingga biasa menggunakan super computing untuk menjebol dan tentunya tidak semua orang memiliki PC dengan kemampuan super ini dan prosesnya rumit dan memakan waktu lama, agen-agen FBI atau CIA biasanya punya komputer semacam ini untuk membaca data-data rahasia yang dikirim melaui VPN.

Apakah Koneksi menggunakan VPN itu lebih cepat????? Hal ini tergantung dari koneksi antara client dengan VPN server karena proses data dilakukan dari VPN otomatis semua data yang masuk ke komputer kita dari jaringan internet akan masuk terlebih dahulu ke VPN server sehingga bila koneksi client ke VPN server bagus maka koneksi juga akan jadi lebih cepat. Biasanya yang terjadi adalah penurunan kecepatan menjadi sedikit lebih lambat karena harus melewati 2 jalur terlebih dahulu temasuk proses enkripsi. VPN ini bisa digunakan untuk mempercepat koneksi luar (internasional) bagaimana caranya???

misal kita punya koneksi lokal (IIX) sebesar 1mbps dan koneksi luar 384kbps kita bisa menggunakan VPN agar koneksi internasional menjadi sama dengan koneksi lokal 1mbps. Cara dengan menggunakan VPN Lokal yang diroute ke VPN Luar

internet <—->VPN Luar<—>VPN lokal <—>Client

mengapa model jaringan ini bisa lebih cepat sebab akses ke jaringan luar dilakukan oleh VPN luar lalu kemudian diteruskan oleh VPN lokal nah kita mengakses ke jaringan lokal yang berarti kecepatan aksesnya sebesar 1mbps. Tentunya diperlukan VPN dengan bandwith besar agar koneksinya bisa lancar.

Nah kenapa dengan koneksi HSDPA macem telkomsel dan indosat bisa lebih cepat???operator membatasi bandwith dari internet kita katakan IM2 dengan paket 256kbps bila kita memakai jaringan 3G dan HSDPA maka kita sebenarny memiliki bandwith sebesar 384kbps dan 3,6mbps untuk HSDPA tetapi hanya digunakan 256kbps karena dibatasi operator dengan VPN server batasan tersebut bisa ditembus cara akan dibahas lebih lanjut.

APakah bisa bikin internet gratisan dan non-quota??? jawabanya bisa selama celah yang digunakan belum diketahui operator :D . Cara melakukannya adalah dengan menggunakan akses port tertentu ke VPN server. Operator biasanya menggunakan port tertentu untuk perhitungan billing dan total data yang terpakai celah inilah yang dapat dimanfaatkan. Misal terdapat port tertentu yang bisa digunakan untuk terhubung ke server VPN maka internet bisa digunakan secara gratis dan bebas qouta. Kenapa bisa begitu???port tersebut tidak digunakan untuk perhitungan billing sehingga kita tidak melewati billing server nah dengan port ini maka kita bisa terhubung ke VPN server melalui jaringan internet.kita konek ke internet tetapi tidak melewati billing server otomatis kita tidak dikenakan charge dan count data tidak dihitung kalaupun dihitung hanya sedikit sekali untuk proses ping ke server. Dengan terhubung ke VPN server maka semua akses akan dilakukan oleh VPN server dan dikirimkan melalui port yang terbuka tadi sehingga kita bisa bebas mengakses intenet. kurang lebih tekniknya seperti itu mungkin ada teknik-teknik lain karena VPN memiliki banyak kelebihan

Kelebihan lain dari VPN adalah akses dimana saja. Kita bisa mengakses komputer di rumah melalui jaringan VPN selama komputer di rumah terhubung internet dan kita memiliki akses internet yang diperlukan hanya software VPN Client untuk menyamakann konfigurasi dan proses authentifikasi. Dengan begitu kita bisa mengakses internet dengan aman dan tidak terdeteksi

Point-to-Point Protocol over Ethernet (PPPoE) adalah protokol jaringan untuk encapsulating Point-to-Point Protocol (PPP) dalam frame Ethernet frame. Hal ini digunakan terutama dengan DSL layanan di mana pengguna individu terhubung ke modem DSL over Ethernet dan di dataran Metro Ethernet jaringan. Ini dikembangkan oleh UUNET , Redback Jaringan dan RouterWare dan tersedia sebagai informasi RFC 2516

ADSL (Asymetric Digital Subscribe Line) merupakan teknologi akses internet dengan frekuensi tinggi melalui kabel tembaga. Prinsip sederhananya, gelombang yang dihantarkan melalui kabel tembagadibagi menjadi dua frekuensi, yaitu frekuensi tinggi untuk menghantarkan data, serta frekuensi rendah untuk menghantarkan suara dan fax. Jadi, ADSL menggunakan gelombang dengan frekuensi tinggi melalui kabel telepon, sedangkan saluran telepon dan fax menggunakan gelombang dengan frekuensi rendah.

Selasa, 05 Oktober 2010

Cara Praktis Cracking Aplikasi Mac OS X - grumpy
grumpy/at/console

---[ Pendahuluan

Cracking aplikasi komputer termasuk ke dalam ranah yang sangat unik dan
menarik. Tulisan ini membahas bagaimana melakukan cracking aplikasi secara
praktis dengan platform Mac OS X dan yang digunakan sebagai contoh adalah
aplikasi text editor populer TktMt dan sejumlah aplikasi games dari BFG.
Sebagai penghargaan terhadap pemilik dan pengembang aplikasi-aplikasi yang
menjadi target dan menghindari indexing dari bot mesin pencari, saya akan
menggunakan alias untuk merujuk ke aplikasi-aplikasi tersebut. Silakan
melihat bagian kata kunci untuk mengetahui aplikasi apa saja yang menjadi
target.

Sebagai peringatan, tulisan ini lebih ditujukan guna memberikan pemahaman
bagaimana model copy protection dari aplikasi digunakan untuk menciptakan
model pengamanan yang lebih baik dikemudian hari dan bukan mendukung
aktifitas ilegal. Selain itu, tulisan ini juga bertujuan untuk
mengilustrasikan bahwa ada cukup banyak hal yang berhubungan dengan
hacking/cracking yang dapat dilakukan dengan cara-cara praktis,
membuktikan bahwa hacker/cracker akan menempuh jalan yang paling mudah
untuk mencapai tujuannya.


---[ Arsitektur Aplikasi Mac OS X

Mac OS X adalah sistem operasi mendukung berbagai teknologi pengembangan
seperti UNIX, Java, Cocoa dan Carbon. Dapat dikatakan bahwa Mac OS X
adalah platform yang cukup populer. Seiring dengan hal tersebut,
pengembangan aplikasi yang menggunakan platform ini juga sudah masuk ke
dalam tahapan yang matang.

Silakan merujuk ke tautan, Mac OS X System Architecture[1], untuk
mendapatkan gambaran yang lebih jelas mengenai penggunaan teknologi dalam
platform Mac OS X.

+------------------------------------------------------------------------+
| |
| USER EXPERIENCE |
| |
| Aqua Dashboard Spotlight Accessibility |
| |
+------------------------------------------------------------------------+
+------------------------------------------------------------------------+
| |
| APPLICATION FRAMEWORKS |
| |
| Cocoa Carbon Java |
| |
+------------------------------------------------------------------------+
+------------------------------------------------------------------------+
| |
| GRAPHICS & MEDIA |
| |
| Quicktime Core Audio Core Image Core Video OpenGL |
| |
+------------------------------------------------------------------------+
+------------------------------------------------------------------------+
| |
| DARWIN |
| |
+------------------------------------------------------------------------+

Lapisan Darwin dari Mac OS X terdiri dari kernel, drivers, dan sejumlah
bagian yang mengadopsi sistem BSD dan teknologi open source lainnya. Saya
akan melewatkan pembahasan mengenai kernel, driver, dukungan file-system,
dukungan jaringan dan dukungan-dukungan lainnya dan fokus hanya kepada
dukungan pengembangan aplikasi.

Sistem arsitektur Mac OS X yang sedemikian kompleks dan fleksibel,
memungkinkan adopsi dan adaptasi teknologi menjadi tidak terbatas. Di
sisi lain, dengan keleluasaan penggunaan teknologi, memungkinkan
teknik-teknik cracking menjadi sangat bervariasi.

Aplikasi Mac OS X saat ini dibuat dengan konteks fleksibilitas yang sangat
tinggi. Hal ini terjadi karena telah terjadi perpindahan tren penggunaan
arsitektur dari PowerPC menjadi Intel CPU dan bermula dar mendukung
aplikasi 32-bit menjadi aplikasi 64-bit sejak Mac OS X versi 10.5.

Saat ini aplikasi Mac OS X selayaknya mendukung empat arsitektur yang
berbeda:
- 32-bit Intel (i386)
- 32-bit PowerPC (ppc)
- 64-bit Intel (x86_64)
- 64-bit PowerPC (ppc64)

Apple sangat merekomendasikan para pengembang untuk mendukung keempat
arsitektur tersebut dan memperkenalkan konsep "universal binaries". Salah
satu tempat untuk mendapatkan referensi yang baik tentang pengembangan di
platform Mac OS X adalah situs Mac Dev Center[2].

Aplikasi Mac OS X saat ini lebih banyak dibuat dengan framework Cocoa.
Selain Cocoa, aplikasi juga dapat dibuat dengan bahasa framework Carbon
(populer sebelum Mac OS X diperkenalkan). Selain Cocoa dan Carbon,
pengembang juga bisa menggunakan framework Java, Qt, GTK, dan lain-lain.
Dalam tulisan ini, saya hanya akan fokus membahas tentang aplikasi yang
menggunakan framework Cocoa.

Mengenai dukungan bahasa pemrograman, Apple menyediakan dukungan langsung
untuk pengembangan aplikasi yang menggunakan C, C++, Objective-C,
Objective-C++, dan lain-lain. Selain itu, untuk bahasa pemrograman lain
biasanya diberikan dari pengembang pihak ketiga seperti GTK dan Qt.

Dalam dokumentasi Trolltech[3], Trenton Schulz menjelaskan secara singkat
mengenai aplikasi secara umum diinstal pada platform Mac OS X. Saya
mencoba menuliskannya kembali di sini.

Mac OS X menangani sebagian besar aplikasi sebagai "bundel". Bundel adalah
struktur direktori yang mengumpulkan file-file terkait. Bundel digunakan
untuk aplikasi GUI, framework, dan paket instaler. Ketika dikonfigurasi
dengan benar, bundel membuat untuk penyebaran menjadi lebih mudah.
Pengembang biasanya mengarsipkan aplikasi menggunakan beberapa metode yang
disukai, seperti menggunakan zip, tar, dmg, rar, dan lain sebagainya.
Pengguna kemudian membuka arsip tersebut dan drag aplikasi ke mana pun
yang mereka sukai (biasanya di direktori /Applications) dan siap untuk
digunakan.

Lihat diagram berikut untuk mengetahui bagaimana struktur direktori secara
umum dari sebuah aplikasi Mac OS X. Nama yang memiliki tanda kurung siku
"[]" adalah direktori.

[AplikasiXYZ.app]
|
'-- [Contents]
|
'-- [Frameworks]
|
'-- [MacOS]
| |
| '-- AplikasiXYZ
|
'-- [Resources]
|
'-- [PlugIns]
|
'-- [SharedFrameworks]
|
'-- Info.plist
|
'-- PkgInfo


---[ Software Copy Protection

Copy protection untuk aplikasi komputer untuk pengguna personal bukanlah
hal baru. Seperti halnya kucing dan tikus, pembuat aplikasi dan crackers
saling berkejaran dalam hal mencegah bagaimana sebuah aplikasi
(berhubungan dengan hak cipta) diperbanyak secara ilegal. Sebuah laman
di Wikipedia tentang copy protection[4] menjelaskan banyak hal yang
berhubungan dengan subyek ini. Dalam artikel tersebut dijelaskan pula
beberapa teknik dalam copy protection yang populer seperti:

- Dongle yang harus terhubung ke komputer;
- Bus enkripsi untuk lingkup yang membutuhkan pengamanan tingkat tinggi,
seperti ATM, komunikasi data yang aman, dan lain-lain;
- Kunci registrasi, cukup populer digunakan;
- Nama dan nomor seri registrasi;
- Keyfile yang akan dibaca oleh aplikasi sebelum aplikasi tersebut mulai
dapat digunakan;
- Aktivasi lewat telepon;
- Aktivasi lewat Internet, seperti aktivasi Microsoft's Windows Genuine
Advantage;
- Code morphing dan code obfuscation.


---[ Aplikasi Umum Yang Digunakan

Apple merilis "Developer Tools" yang berisi sejumlah aplikasi yang dapat
digunakan untuk membuat/mengkompail dan melakukan debug/disassemble.
"Developer Tools" ini dapat ditemukan dalam paket instal DVD Mac OS X
ataupun diunduh dari website Apple Developer Connection
http://developer.apple.com/.

Aplikasi yang umum digunakan untuk mendebug dan dapat ditemukan dalam
"Developer Tools" antara lain:
- gdb(1), GNU debugger
- nm(1), Object File Symbol Table Viewer
- nasm(1), Netwide Assembler, a portable 80x86 assembler
- ndisasm(1), Netwide Disassembler, an 80x86 binary file disassembler

Selain itu, terdapat aplikasi bawaan yang juga dapat dimanfaatkan seperti:
- strings(1), menampilkan "printable strings" dari sebuah object, binari
atau file
- vmmap(1), menampilkan area virtual memory yang dialokasikan dalam
sebuah proses
- lipo(1), untuk menangani binari Universal
- xxd(1), membuat hexdump
- file(1), untuk mencari tahu jenis file
- otool(1), menampilkan object dari file

Anda juga dapat menginstal aplikasi pihak ketiga sebagai tambahan jika
diperlukan seperti:
- otx, http://otx.osxninja.com/
- class-dump, http://www.codethecode.com/projects/class-dump/
- hte, http://hte.sourceforge.net
- ptool, HexFiend, ocalc, 0xEd http://reverse.put.as/tools/
- nasm, dapat diinstal melalui macports

Catatan: Jika saya menuliskan program(1) berarti Anda dapat membaca
manualnya dengan perintah "man 1 program".


---[ Contoh: TxtMt

Cukup banyak tautan yang dapat dijadikan sebagai referensi ketika saya
mencari informasi dengan kata kunci "Reverse Engineering in Mac OS X".
Anda dapat memulainya dengan bahasan pada website Wikibooks[5] mengenai
subyek ini.

Untuk mempermudah pemahaman, saya mencoba langsung dengan contoh bagaimana
melakukan reversing dan cracking secara praktis. Sebagai target adalah
aplikasi text editor populer TxtMt (silakan merujuk ke bagian "Kata Kunci"
untuk mengetahui informasi lebih lanjut mengenai aplikasi ini).

Saya menggunakan versi rilis terbaru 1.5.9 dengan batasan 30 hari trial.

$ curl -O http://download.xxx.com/TxtMt_1.5.9.dmg
$ open TxtMt_1.5.9.dmg
$ mount
...
/dev/disk5s2 on /Volumes/TxtMt 1.5.9 (hfs, local, nodev, nosuid,
read-only, noowners, mounted by grumpy)

Selanjutnya adalah menyalin aplikasi TxtMt yang ada di volume TxtMt ke
direktori kerja. Mari kita tengok struktur aplikasi tersebut.

$ find TxtMt.app -type d -maxdepth 2
TxtMt.app
TxtMt.app/Contents
TxtMt.app/Contents/MacOS
TxtMt.app/Contents/PlugIns
TxtMt.app/Contents/Resources
TxtMt.app/Contents/SharedSupport

Terdapat sebuah file binari yang dapat dieksekusi dan terdapat dalam
direktori TxtMt.app/Contents/MacOS

$ ls TxtMt.app/Contents/MacOS
TxtMt

Untuk mencari tahu jenis file tersebut...

$ cd TxtMt.app/Contents/MacOS
$ file TxtMt
TxtMt: Mach-O universal binary with 2 architectures
TxtMt (for architecture ppc): Mach-O executable ppc
TxtMt (for architecture i386): Mach-O executable i386

Dapat diketahui bahwa file binari tersebut adalah Universal binary yang
mendukung 2 arsitektur PPC dan i386. Kemudian, saya mencoba membaca
"display name list (symbol table)" menggunakan nm(1) dan mencari simbol
yang "menarik". "Menarik" di sini adalah simbol yang berhubungan dengan
rutin registrasi, lisensi atau batas akhir penggunaan dari aplikasi.

$ nm TxtMt > TxtMt-nm.txt

Kata kunci "license" digunakan untuk menampilkan simbol-simbol yang
berhubungan.

$ grep -i license TxtMt-nm.txt
0008640e t -[OakRegistrationManager changeLicense:]
00085b2e t -[OakRegistrationManager changeToLicenseInformationView:]
00085940 t -[OakRegistrationManager lostLicense:]
00086840 t -[OakRegistrationManager setLicenseInfo:]
000855f8 t -[OakRegistrationManager setLicenseKey:]
002156c0 s _LicenseTypes
001f862c s _OakRegistrationLicenseKey
0019d6be s __GLOBAL__I_LicenseTypes

Proses registrasi aplikasi TxtMt nampaknya ditangani oleh rutin
OakRegistrationManager. Lalu saya mencoba kata kunci "register".

$ grep -i register TxtMt-nm.txt
0006e06e t +[OakColorWell registerColorWell:]
0006e088 t +[OakColorWell unregisterColorWell:]
0003365e t +[OakHTMLOutputManager registerIdleWindow:forUUID:]
000336c2 t +[OakHTMLOutputManager unregisterIdleWindowForUUID:]
00006cd0 t -[AppDelegate registerUntitledDocument]
00006cfc t -[AppDelegate registerUntitledProject]
00006ce2 t -[AppDelegate unregisterUntitledDocument:]
00006d0e t -[AppDelegate unregisterUntitledProject:]
0012e412 t -[Bundle registerBundleItem:]
00085576 t -[OakRegistrationManager canRegister]
000075f4 t __Z13is_registeredv
000e27be t __Z27register_movement_functionsR10action_map
001025d2 t __Z28register_transform_functionsR10action_map
...

Saya tertarik dengan dua baris berikut:

00085576 t -[OakRegistrationManager canRegister]
000075f4 t __Z13is_registeredv

Walaupun ada rutin lain yang dapat dibypass untuk melewati masa waktu
penggunaan aplikasi, namun saya lebih tertarik pada dua baris di atas.
Saya kemudian menggunakan otool(1)

$ otool -LtV TxtMt > TxtMt-otool.txt

Selain otool(1), tool lain yang dapat dimanfaatkan adalat otx.

$ otx -arch i386 TxtMt > TxtMt-otx.txt

Kemudian, saya melihat hasil output dari otool untuk melihat hasil
bongkaran (disassemble) dari aplikasi TxtMt khusus untuk offset 00085576
dan 000075f4.

-[OakRegistrationManager canRegister]:
00085576 pushl %ebp
00085577 movl %esp,%ebp
00085579 subl $0x08,%esp
0008557c calll 0x1000075f4
00085581 leave
00085582 movzbl %al,%eax
00085585 ret
...
__Z13is_registeredv:
000075f4 pushl %ebp
000075f5 movl %esp,%ebp
000075f7 pushl %edi
000075f8 pushl %esi
000075f9 pushl %ebx
000075fa subl $0x0000010c,%esp
00007600 movl 0x00218454,%eax
...
00007dbf calll 0x002258da ; symbol stub for: __Unwind_Resume
00007dc4 xorl %esi,%esi
00007dc6 movb $0x01,0xffffff20(%ebp)
00007dcd movb $0x01,0xffffff21(%ebp)
00007dd4 jmpl 0x100007987
00007dd9 leal 0xf4(%ebp),%esp
00007ddc movl %ecx,%eax
00007dde popl %ebx
00007ddf popl %esi
00007de0 popl %edi
00007de1 leave
00007de2 ret
00007de3 nop

Beberapa hal yang sepertinya harus diinvestigasi lebih lanjut...
- Pada fungsi [OakRegistrationManager canRegister]:
0008557c calll 0x1000075f4
- Pada fungsi __Z13is_registeredv
00007ddc movl %ecx,%eax

Mari kita pastikan dengan menggunakan gdb(1).

$ gdb -q TxtMt
Reading symbols for shared libraries ................. done
(gdb) b * 0x00007ddc
Breakpoint 1 at 0x7ddc
(gdb) r
Starting program: /Users/grumpy/Hack/TxtMt.app/Contents/MacOS/TxtMt
...
Reading symbols for shared libraries .... done

Breakpoint 1, 0x00007ddc in is_registered ()
(gdb)
Breakpoint 1, 0x00007ddc in is_registered ()
(gdb) set $eax = 1
(gdb) c
Continuing.

Breakpoint 1, 0x00007ddc in is_registered ()
(gdb) c
Continuing.

Breakpoint 1, 0x00007ddc in is_registered ()
...

Tekan "c" sampai muncul registration box, kemudian quit gdb(1).

(gdb) q
The program is running. Exit anyway? (y or n) y

Lalu bagaimana kita melakukan membypass proses registrasi? Mari kita coba
pahami bagaimana prosedur registrasi dan verifikasi serial number secara
umum.

+---------------------+
| Aplikasi_Dijalankan |
+---------------------+
|
v
+------------+ ----- +------------------------+
| Registrasi |--> < Belum >--> | Masukkan_Serial_Number |
+------------+ ----- +------------------------+
| |
v v
----- +-------------------+
< Sudah > <-----------------| Verifikasi_Serial |
----- +-------------------+
|
v
+----------------------+
| Aplikasi_Jalan_Penuh |
+----------------------+

Cracker dapat:
- memanipulasi proses [Verifikasi_Serial] untuk menerima input apa saja
yang diberikan pengguna;
- lompat langsung pada status ;
- menghilangkan prosedur [Registrasi].

Saya mulai menggunakan aplikasi TxtMt ini sejak 2006. Karena saya belum
terbiasa melakukan cracking, saya mencoba dengan dasar pemikiran sederhana
dan memilih pilihan terakhir, menghilangkan prosedur [Registrasi].

Yang saya lakukan waktu itu adalah menghilangkan prosedur
[OakRegistrationManager canRegister]. Prosedur ini hanya saya temukan 1
kali pada hasil bongkaran binari. Proses menghilangkan prosedur tersebut
dapat dilakukan dengan binary patching. Dan oleh karena saya termasuk
orang yang malas, saya melakukan patching secara "kasar". Saya menggunakan
fungsi Perl substitusi inline dan mengganti "canRegister" menjadi
"fooRegister". Mengapa hanya melakukan s/can/foo/? Karena saya harus
menjaga integritas file agar checksum-nya sama.

$ perl -pi.orig -e 's/canRegister/fooRegister/' TxtMt

dan aplikasipun dapat digunakan tanpa perlu melakukan registrasi.

Tahun 2008, saya menemukan sebuah artikel blog[6] yang ditulis oleh
"hlinzhou" dan membahas bagaimana melakukan cracking pada aplikasi yang
sama dengan metode kedua, lompat langsung pada status .


---[ Contoh: BFG - TWH

BFG adalah portal yang menjual berbagai aplikasi games untuk platform PC
dan Mac. BFG menjual aplikasi games yang dikembangkan oleh pihak ketiga
dan memberikan demo untuk waktu yang terbatas, biasanya 60 menit. Di sini,
saya menjadikan aplikasi game TWH sebagai contoh.

Setelah mengunduh dan membuka arsip, saya mencoba menganalisa konten dari
aplikasi game tersebut.

$ cd /Volumes/TWH
$ find TWH.app -type d -maxdepth 4
TWH.app
TWH.app/Contents
TWH.app/Contents/MacOS
TWH.app/Contents/Resources
TWH.app/Contents/Resources/.TWH.app
TWH.app/Contents/Resources/.TWH.app/Contents
TWH.app/Contents/Resources/MonitorResources.bundle
TWH.app/Contents/Resources/MonitorResources.bundle/Contents

Saya agak terkejut ketika menemukan direktori .TWH.app dalam direktori
TWH.app/Contents/Resources. Kemudian, saya mencoba menginvestigasi...

$ cd TWH.app/Contents/MacOS
$ file TWH
TWH: Mach-O universal binary with 2 architectures
TWH (for architecture i386): Mach-O executable i386
TWH (for architecture ppc): Mach-O executable ppc

Dengan menggunakan strings(1) untuk menampilkan "printable text" dari
binari TWH, saya menemukan informasi menarik.

$ strings TWH
__dyld_make_delayed_module_initializer_calls
__dyld_mod_term_funcs
/usr/lib/libSystem.B.dylib
__cxa_atexit
__cxa_finalize
atexit
drain
runDemoUIWithEntryFlag:
...
NSString
NSFileManager
NSBundle
NSAutoreleasePool
NSApplication
%s/.%s
/Resources
GameAppName
%s/.%s/Contents/MacOS/%s
/System/Library/Frameworks/Carbon.framework/Versions/Current/Support/LaunchCFMApp
kill
%@/Resources
%@/MonitorResources.bundle
%@/Library/Preferences/BFG/%@/.settings
%@/.bfgl%@/.sysdata
%@/.gmsave
%@/Library/Preferences/BFG
%s/%@
%@/.bfgl%@
NSMutableArray
NSObject
BFGLicenses
UTF8String
...

Ternyata binari TWH adalah "wrapper" untuk menangani demo dan registrasi.
Ketika saya mencoba menjalankan aplikasi .TWH.app yang ada di direktori
tersebut, dan ternyata bisa.

Catatan: Aplikasi .TWH.app tidak dapat ditemukan jika diakses lewat
Finder.app karena ada "." di depan nama direktori dan dianggap sebagai
direktori yang "hidden".

Kemudian saya menyalin aplikasi "asli" ke direktori yang saya inginkan.

$ mkdir /Applications/Games/TWH
$ cp -r /Volumes/TWH/TWH.app/Contents/Resources/.TWH.app \
/Applications/Games/TWH/TWH.app


---[ Penutup

Cracking aplikasi Mac OS X tidak jauh berbeda dengan cracking aplikasi
pada platform lainnya seperti pada Windows dan Unix/Linux. Pemahaman
mengenai assembly memang diperlukan, namun tidak menjadi keharusan.
Penggunaan logika dan teori praktis lebih menjadi keutamaan. Saya sertakan
referensi ekstra untuk menambah wawasan Anda mengenai isu cracking.


---[ Kata Kunci

Gunakan algoritma Base64 untuk memetakan kembali kata kunci ke plain text.
TxtMt: VGV4dE1hdGUK
BFG: QmlnIEZpc2ggR2FtZXMK
TWH: VGhlIFdoaXRlIEhvdXNlCg==

Silakan googling untuk mendapatkan informasi lebih lanjut mengenai
aplikasi-aplikasi yang saya contohkan.

BROKEN HEART

hamster q

Template by:
Free Blog Templates