SpyMasterSnakeForum
Forumlar Kayıt Ol Takvim Üye Listesi Takım Arama Sıkça Sorulan Sorular

SpyMasterSnakeForum » Bilgisayar » Programlama Dilleri » Döküman import section kullanmadan program yazmak » Merhaba ziyaretçi [Giriş|Kayıt Ol]
Son Mesaj | Okunmamış ilk mesaj Sayfayı Yazdır | Konuyu Favorilerime Ekle
Yeni Konu Gönder Cevap Gönder
Sayfanın en altına in import section kullanmadan program yazmak
Yazar
Mesaj « Önceki Konu | Sonraki Konu »

streamer streamer [Erkek]
Programlama Dilleri Modu.


images/avatars/avatar-367.gif

Kayıt Tarihi: 29-09-2005
Mesajlar: 243
Eğitim Durumu: Önlisans
Bilgi Sahibi Olduğu Konular: IA32/64 Assembly;Masm32;C/C+ +;C#;.Net;Device Driver Developing;KernelMod e;Windows Server Family OS's Management;NAS;SAN;L DAP Architecture;Reverse Engineering;3D Modelling and sleeping


Oy Ver

Seviye: 32 [?]
Deneyim: 387,199
Sonraki Seviye: 453,790

Sonraki seviye için gereken puan : 66,591

Lamp import section kullanmadan program yazmak Bu Mesajı Cevapla Alıntı İle Cevapla Mesajları Düzenle/Sil Mesajı bir yöneticiye bildir       Sayfanın en üstüne çık

Aşağıdaki yazıyı biraz önce bir forumda yazdım biraz daha yararlı olsun diye burayada yazayım dedim belki birilerinin işine yarar.

.idata yani import data programların diğer programlardan export ettiği fonksiyonların kullanılmasını sağlayan bir kısayol görevi icra eder. Örneğin programınızda basit bir mesaj çıkarmak için win apileriden MessageBoxA apisini tercih ettiğinizi varsayarsak kulandığınız programlama dilinin compileri bunu kaynak kodunuzun içerisinde sanırımFrown delphi için Kod:
var
,c++ ve masm32 için Kod:
include
) belirteçleri sayesinde hangi yardımcı api librarylerinin kullanıldığına bakar ve message box'u çıkaracağı zaman sizin kodunuzdaki Kod:
MessageBoxA
parametrelerini ve jump adresini alır ve gerekli apinin içerisine zıplar ve kod icra etmeye taki mesaj kutusu çıkana dek orada devam eder. Peki programdan bu import tableları silersen nolur compiler invoke MessageBox,NULL,addr hede,addr hödo,MB_OK
satırına gelir ve hönk der. Sebebini söylemeye gerek yok sanırım.

Şimdi gelelim bunu dissassembler dan nasıl saklayacağımıza . Eğer biz programımızı yazarken derleyiciye bu import işini bırakmadan "kardeş ben kernel32 dll'nin yerinide bulurum fonksiyonlarım yerinide sen çık aradan" demek istersek aşağıdaki gibi örnek bir kod işimizi fazla fazla görecektir. Kodu ince ince açıklamak isterdim ama vakit yok. Eğer şurayı anlamadım diyip yine bu konu başlığı altında kod la ilgili bir şeyler sorarsanız ilerleyen zamanlarda yardımcı olmaya çalışırız.



Kod:
.486
.Model Flat, Stdcall
Option Casemap:None

.Data

; kernel32.dll fapi's
___Kernel32 db 14,"GetProcAddress"
_Getprocaddress dd 0

db 11,"LoadLibrary"
_Loadlibrary dd 0

db 11,"ExitProcess"
_Exitprocess dd 0

; user32.dll api's
___User32 db 11,"MessageBeep"
_Messagebeep dd 0

db 10,"MessageBox"
_MessageBox dd 0

_Kernel Dd 0

_User32 db "USER32",0
_Default Dd 0

.Code

Start:
Call Delta
Delta:
Pop Ebp ; delta ofseti al
Sub Ebp,Offset Delta

Call Get_Kernel ; kernel32'nin base adresini al
Push 3 ;
pop Ecx
Lea Esi,[Ebp+Offset ___Kernel32]
Call Get_Apis ; .apileri bul

Lea Eax,[Ebp+Offset _User32] ; user32.dll yükle
Push Eax
Call [Ebp+_Loadlibrary] ; // // //

test Eax,Eax
jz Error_Exit

Mov [Ebp+Offset _Default],Eax ; sonucu sakla

push 2
pop Ecx
Lea Esi, [Ebp+Offset ___User32]
Call Get_Apis ; user32 apilerini al

Push -1
Call [Ebp+_Messagebeep] ; beep

Push 0
Call _t02
db "little test",0
_t02: Call _t01
db ".idata yok mesaj var?",0
_t01: Push 0
Call [Ebp+_MessageBox] ; messagebox

Error_Exit:
Push 0
Call [Ebp+_Exitprocess] ; çık


; ######################## get kernel ########################

Get_Kernel:
Mov Ecx,[Esp+4] ; stackten kernelin adresini al

Kernel_Loop:
xor edx,edx
Dec Ecx ;ecx bizim için bir geri sayım sayacı olacak
Mov Dx,[Ecx+3Ch] ;ecx'in her geri sayım işleminde (ki ecx=kernel32.dll' için de bir kodu temsil ediyor) ecx+3ch yapıp
Test Dx,0F800H ;F800 ile uyuşup uyuşmadığına bakıyoruz
Jnz Kernel_Loop
Cmp Ecx,[Ecx+Edx+34H] ;Eğer F800 ise PE başlığı kontrolu yapıyoruz
Jnz Kernel_Loop
Mov [Ebp+Offset _Kernel],Ecx
Mov [Ebp+Offset _Default],Ecx
Ret

; ######################## get apis ########################
; default = dll base
; ecx = apilerin sayısı
; esi = structure adres
Get_Apis:
Xor Ebx,Ebx
Api_Loop:
Inc Esi ;
Push Ecx ;
Movzx ecx, byte ptr [Esi-1] ;
Push Ecx
Call Get_Api
Pop Ebx
Pop Ecx
Add Esi,Ebx
Mov [Esi],Eax
Add Esi,4
Loop Api_Loop
Ret

Get_Api:
Mov Edx, [Ebp+Offset _Default]
Add Edx, [Edx+3Ch] ; PE başlığı
Mov Edx, [Edx+78H] ; Export table adresi
Add Edx, [Ebp+Offset _Default]

Mov Edi, [Edx+32]
Add Edi, [Ebp+Offset _Default]
Mov Edi, [Edi]
Add Edi, [Ebp+Offset _Default]
Mov Eax, [Edx+24]
Xor Ebx,Ebx
Next_One:
Push Ecx
Inc Ebx
Push Esi
Push Edi
Repz Cmpsb ; compare api with export
Pop Edi
Pop Esi
Jnz Not_Found
Pop Ecx
Mov Ecx, [Edx+36]
Add Ecx, [Ebp+Offset _Default]
Dec Ebx
Movzx eax, word ptr [Ecx+Ebx*2]
Mov Ebx, [Edx+28] ;Get Addroffunctions
Add Ebx, [Ebp+Offset _Default]
Mov Eax, [Ebx+Eax*4]
Add Eax, [Ebp+Offset _Default]
Ret
Not_Found:
Dec Edi
Loop_1:
Inc Edi
Cmp Byte Ptr [Edi],0
Jnz Loop_1

Inc Edi
Dec Eax
Jz Exit_Search
Pop Ecx
Jmp Next_One
Exit_Search:
Jmp Error_Exit
Ret

End Start

__________________
If I had six hours to chop down a tree, I'd spend the first four of them sharpening my axe.


Abraham Lincoln

Bu mesaj toplam 1 kez düzenlendi. Son düzenlemesi streamer tarafından 28-11-2005 saat 14:13 civarında gerçekleşti.

27-11-2005 17:11 streamer bağlı değil streamer adlı üyeye mail gönder streamer in Websitesini Ziyaret Et Bütün Mesajlarını Görüntüle Dost Listene Ekle streamer streamer adlı kullanıcının MSN Profilini göster Bookmark and Share

SiMuRg SiMuRg [Erkek]
Programlama Dilleri Modu.


images/avatars/avatar-416.jpg

Kayıt Tarihi: 10-10-2005
Mesajlar: 509
Eğitim Durumu: Lisans
Meslek: Mühendis
Bilgi Sahibi Olduğu Konular: JAVA JAVA JAVA, .NET, C, Delphi, PHP, MYSQL, ORACLE, SQL SERVER, TCP/IP, Network, IIS


Oy Ver

Seviye: 35 [?]
Deneyim: 805,654
Sonraki Seviye: 824,290

Sonraki seviye için gereken puan : 18,636

Bu Mesajı Cevapla Alıntı İle Cevapla Mesajları Düzenle/Sil Mesajı bir yöneticiye bildir       Sayfanın en üstüne çık

eline sağlık ve teşekkür ederiz, hiç ilgilenmedim ama güzel bi çalışma.

__________________
Hadi.. Yine.. Yeniden...
28-11-2005 11:48 SiMuRg bağlı değil SiMuRg adlı üyeye mail gönder Bütün Mesajlarını Görüntüle Dost Listene Ekle SiMuRg Bookmark and Share

kapgan kapgan [Erkek]
Byte


Kayıt Tarihi: 22-10-2005
Mesajlar: 169
Eğitim Durumu: Lisans
Meslek: KALIP
Bilgi Sahibi Olduğu Konular: visual basic c++ alt seviye ve catia


Oy Ver

Seviye: 30 [?]
Deneyim: 265,429
Sonraki Seviye: 300,073

Sonraki seviye için gereken puan : 34,644

Bu Mesajı Cevapla Alıntı İle Cevapla Mesajları Düzenle/Sil Mesajı bir yöneticiye bildir       Sayfanın en üstüne çık

sağol hocam eline sağlık

__________________
ASASAS
02-01-2006 00:57 kapgan bağlı değil Bütün Mesajlarını Görüntüle Dost Listene Ekle kapgan kapgan adlı kullanıcının MSN Profilini göster Bookmark and Share

Respect Respect [Erkek]
8 Bit


images/avatars/avatar-1153.gif

Kayıt Tarihi: 13-11-2005
Mesajlar: 28
Eğitim Durumu: Lisans
Bilgi Sahibi Olduğu Konular: Hack


Oy Ver

Seviye: 22 [?]
Deneyim: 43,361
Sonraki Seviye: 49,025

Sonraki seviye için gereken puan : 5,664

Cvp: import section kullanmadan program yazmak Bu Mesajı Cevapla Alıntı İle Cevapla Mesajları Düzenle/Sil Mesajı bir yöneticiye bildir       Sayfanın en üstüne çık

Evet bunlari verdigin kodlari denedim idata yok Smile

__________________
Bildiğim tek şey hiç bir şey bilmediğimdir.
05-03-2006 00:15 Respect bağlı değil Bütün Mesajlarını Görüntüle Dost Listene Ekle Respect Bookmark and Share

kapgan kapgan [Erkek]
Byte


Kayıt Tarihi: 22-10-2005
Mesajlar: 169
Eğitim Durumu: Lisans
Meslek: KALIP
Bilgi Sahibi Olduğu Konular: visual basic c++ alt seviye ve catia


Oy Ver

Seviye: 30 [?]
Deneyim: 265,429
Sonraki Seviye: 300,073

Sonraki seviye için gereken puan : 34,644

hocam bu konuyu bir ara açarmısınız Bu Mesajı Cevapla Alıntı İle Cevapla Mesajları Düzenle/Sil Mesajı bir yöneticiye bildir       Sayfanın en üstüne çık

hiç aklıma gelmemişti baktıkça pes diyorum gerçi arayıp bulmak acemi için zor biraz insanı yorar ama yinede cok güzel bir mantık yine teşekkür ederim

__________________
ASASAS
05-03-2006 17:56 kapgan bağlı değil Bütün Mesajlarını Görüntüle Dost Listene Ekle kapgan kapgan adlı kullanıcının MSN Profilini göster Bookmark and Share

Ağaç Yapısı | Forum Yapısı
Git:
Yeni Konu Gönder Cevap Gönder
SpyMasterSnakeForum » Bilgisayar » Programlama Dilleri » Döküman import section kullanmadan program yazmak

FORUM KURALLARI | YÖNETİM | ARAMA | SSS | WEB CHAT
SpyMS Forum - Bir SpyMasterSnake Mechatronic Security NetWork İştirakidir.
~ High Quality Advanced & Elite Experience ~