The Duduls

Behind the Dudul
 
HomeRegisterLog in

Share | 
 

 [SHARE] Cara nge-Buat Program AntiVirus Sendri

View previous topic View next topic Go down 
AuthorMessage
Bhorzer
Moderators
Moderators


Male Number of posts : 227
Location : 192.168.1.5
Registration date : 2008-12-01

PostSubject: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Tue Dec 09, 2008 8:18 pm

Code:

Mari kita belajar membuat sebuah AV sederhana, yang diperlukan :

1. Software Visual Basic 6.0
2. Sedikit pemahaman akan pemograman Visual Basic 6.0
3. Sampel file bersih atau virus (-- opsional)

Code:

First#
Sekarang kita akan belajar membuat sebuah rutin sederhana untuk :
- Memilih file yang akan dicek
- Membuka file tersebut dalam mode binary
- Memproses byte demi byte untuk menghasilkan Checksum

Buka MS-Visual Basic 6.0 anda, lalu buatlah sebuah class module dan Form dengan menambahkan sebuah objek Textbox, CommonDialog dan Command Button.
(Objek CommonDialog dapat ditambahkan dengan memilih Project -> COmponent atau Ctrl-T dan memilih Microsoft Common Dialog Control 6.0)
Ketikkan kode berikut pada class module (kita beri nama class module tsb clsCrc) :

================= START HERE ====================

Private crcTable(0 To 255) As Long 'crc32

Public Function CRC32(ByRef bArrayIn() As Byte, ByVal lLen As Long, Optional ByVal lcrc As Long = 0) As Long

'bArrayIn adalah array byte dari file yang dibaca, lLen adalah ukuran atau size file

Dim lCurPos As Long 'Current position untuk iterasi proses array bArrayIn
Dim lTemp As Long 'variabel temp hasil perhitungan

If lLen = 0 Then Exit Function 'keluar fungsi apabila ukuran file = 0
lTemp = lcrc Xor &HFFFFFFFF

For lCurPos = 0 To lLen
lTemp = (((lTemp And &HFFFFFF00) \ &H100) And &HFFFFFF) Xor (crcTable((lTemp And 255) Xor bArrayIn(lCurPos)))
Next lCurPos

CRC32 = lTemp Xor &HFFFFFFFF

End Function

Private Function BuildTable() As Boolean
Dim i As Long, x As Long, crc As Long
Const Limit = &HEDB88320

For i = 0 To 255
crc = i
For x = 0 To 7
If crc And 1 Then
crc = (((crc And &HFFFFFFFE) \ 2) And &H7FFFFFFF) Xor Limit
Else
crc = ((crc And &HFFFFFFFE) \ 2) And &H7FFFFFFF
End If
Next x
crcTable(i) = crc
Next i
End Function

Private Sub Class_Initialize()
BuildTable
End Sub


================= END HERE ====================

Lalu ketikkan kode berikut dalam event Command1_Click :

================= START HERE ====================

Dim namaFileBuka As String, HasilCrc As String
Dim CCrc As New clsCrc 'bikin objek baru dari class ClsCrc
Dim calCrc As Long
Dim tmp() As Byte 'array buat file yang dibaca

Private Sub Command1_Click()
CommonDialog1.CancelError = True 'error bila user mengklik cancel pada CommonDialog
CommonDialog1.DialogTitle = "Baca File" 'Caption commondialog

On Error GoTo erorhandle 'label error handle

CommonDialog1.ShowOpen
namafilbuka = CommonDialog1.FileName
Open namafilbuka For Binary Access Read As #1 'buka file yang dipilih dengan akses baca pada mode binary
ReDim tmp(LOF(1) - 1) As Byte 'deklarasi ulang untuk array, # Bugs Fixed #
Get #1, , tmp()
Close #1

calCrc = UBound(tmp) 'mengambil ukuran file dari array
calCrc = CCrc.CRC32(tmp, calCrc) 'hitung CRC

HasilCrc = Hex(calCrc) 'diubah ke format hexadesimal, karena hasil perhitungan dari class CRC masih berupa numeric
Text1.Text = HasilCrc 'tampilkan hasilnya
Exit Sub

erorhandle:
If Err.Number <> 32755 Then MsgBox Err.Description 'error number 32755 dalah bila user mengklik tombol cancel pada saat memilih file

================= END HERE ====================

COba anda jalankan program diatas dengan memencet tombol F5, lalu klik Command1 untuk memilih dan membuka file. Maka program akan
menampilkan CRC32nya.

Second#
Kode diatas dapat kita buat menjadi sebuah rutin pengecekan file suspect virus dengan antara membandingkan hasil
CRC32nya dan database CRC kita sendiri. Algoritmanya adalah :
- Memilih file yang akan dicek
- Membuka file tersebut dalam mode binary
- Memproses byte demi byte untuk menghasilkan Checksum
- Buka file database
- Ambil isi file baris demi baris
- Samakan Checksum hasil perhitungan dengan checksum dari file

Format file database dapat kita tentukan sendiri, misal :
- FluBurung.A=ABCDEFGH
- Diary.A=12345678
Dimana FluBurung.A adalah nama virus dan ABCDEFGH dalah Crc32nya. Jika kita mempunyai format file seperti diatas, maka kita perlu membaca
file secara sekuensial per baris serta memisahkan antara nama virus dan Crc32nya. Dalam hal ini yang menjadi pemisah adalah karakter '='.
Buat 1 module baru (-- diberi nama module1) lalu isi dengan kode :

================= START HERE ====================

Public namaVirus As String, CrcVirus As String 'deklarasi variabel global untuk nama dan CRC virus
Public pathExe as String 'deklarasi variabel penyimpan lokasi file EXE AV kita

Public Function cariDatabase(Crc As String, namaFileDB As String) As Boolean
Dim lineStr As String, tmp() As String 'variabel penampung untuk isi file
Open namaFileDB For Input As #1 'buka file dengan mode input
Do
Line Input #1, lineStr
tmp = Split(lineStr, "=") 'pisahkan isi file bedasarkan pemisah karakter '='
namaVirus = tmp(0) 'masukkan namavirus ke variabel dari array
CrcVirus = tmp(1) 'masukkan Crcvirus ke variabel dari array
If CrcVirus = Crc Then 'bila CRC perhitungan cocok/match dengan database
cariDatabase = True 'kembalikan nilai TRUE
Exit Do 'keluar dari perulangan
End If
Loop Until EOF(1)
Close #1
End Function

================= END HERE ====================

Lalu tambahkan 1 objek baru kedalam Form, yaitu Command button2. lalu ketikkan listing kode berikut kedalam event Command2_Click :

================= START HERE ====================
If Len(App.Path) <= 3 Then 'bila direktori kita adalah root direktori
pathEXE = App.Path
Else
pathEXE = App.Path & "\"
End If

CommonDialog1.CancelError = True 'error bila user mengklik cancel pada CommonDialog
CommonDialog1.DialogTitle = "Baca File" 'Caption commondialog

On Error GoTo erorhandle 'label error handle

CommonDialog1.ShowOpen
namafilbuka = CommonDialog1.FileName
Open namafilbuka For Binary Access Read As #1 'buka file yang dipilih dengan akses baca pada mode binary
ReDim tmp(LOF(1) - 1) As Byte 'deklarasi ulang untuk array # Bugs Fixed #
Get #1, , tmp()
Close #1

calCrc = UBound(tmp) 'mengambil ukuran file dari array
calCrc = CCrc.CRC32(tmp, calCrc) 'hitung CRC

HasilCrc = Hex(calCrc) 'diubah ke format hexadesimal, karena hasil perhitungan dari class CRC masih berupa numeric
If cariDatabase(HasilCrc, pathEXE & "DB.txt") Then 'bila fungsi bernilai TRUE
MsgBox "Virus ditemukan : " & namaVirus 'tampilkan message Box
End If
Exit Sub

erorhandle:
If Err.Number <> 32755 Then MsgBox Err.Description 'error number 32755 dalah bila user mengklik tombol cancel pada saat memilih file

================= END HERE ====================

Fitur AV sederhana ini dapat ditambahkan dengan fitur process scanner, akses registry, real-time protection (RTP) dan lain lain. Untuk process
scanner pada dasarnya adalah teknik enumerasi seluruh proses yang sedang berjalan pada Sistem Operasi, lalu mencari letak atau lokasi file
dan melakukan proses scanning. Fitur akses registry memungkinkan kita untuk mengedit secara langsung registry windows apabila akses terhadap
registry (--Regedit) diblok oleh virus. Sedangkan fitur RTP memungkinkan AV kita berjalan secara simultan dengan windows explorer untuk mengscan
direktori atau file yang sedang kita browse atau lihat. Untuk ketiga fitur lanjutan ini akan dibahas pada artikel selanjutnya.


Ayoo... blajar... blajar.....


study study



Thanks to my Best Friend PusHm0v


Last edited by Bhorzer on Wed Dec 10, 2008 2:39 am; edited 1 time in total
Back to top Go down
View user profile
/me
Admin
Admin


Female Number of posts : 503
Location : Dudul's hoz
Registration date : 2008-11-16

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Tue Dec 09, 2008 9:16 pm

Pusing .... lol!

_________________
"The Biggest Dudul's Family .. !!"
Back to top Go down
View user profile http://www.theduduls.tk
3may
Moderators
Moderators


Male Number of posts : 200
Age : 103
Location : cerbon
Registration date : 2008-12-31

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Wed Dec 31, 2008 4:27 am

muantap bro... Idea

ijin copas bro....
Back to top Go down
View user profile
3may
Moderators
Moderators


Male Number of posts : 200
Age : 103
Location : cerbon
Registration date : 2008-12-31

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Wed Dec 31, 2008 4:59 am

emang virus bikin ane BT, tp klo gak da virus ane kadang ngerasa keilangan. Laughing Laughing Laughing

ane mo sedikit share,

Sebenernya program VB ini bukan murni buatan ane, program ini merupakan pengembangan dari program sebelumnya yaitu pPoliEdit yg ane dapet dari CD Visual Basic 2003. And hasil dari pencarian ane di Mbah Google, mengenai Registry Windows XP.

Utility ini bagi ane lumayan ngebantu wat ngilangin dampak dari virus yang ngerubah registry (ex: Folder Options ilang, dll)

Component yang diperlukan (ActiveX): Microsoft Windows Common Controls 6.0 (SP6).

ToolBox yang dipake: 1 TreeView, 2 Command Button and 1 ImageList

Properties LineStyle pada TreeView diubah menjadi 1-tvwRootLine




Buat 1 Modul and copy paste or ketik sendiri source dibawah ini :

Public Declare Function SHRestartSystem Lib "Shell32" Alias "#59" (ByVal hOwner As Long, ByVal sPrompt As String, ByVal uFlags As Long) As Long
Public Const Restart_Logoff = &H0
Public Const Restart_ShutDown = &H1
Public Const Restart_Reboot = &H2
Public Const Restart_Force = &H4

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Const REG_DWORD As Long = 4
Private Const KEY_ALL_ACCESS As Long = &H3F
Private Const HKEY_CURRENT_USER As Long = &H80000001
Private Const ERROR_SUCCESS As Long = 0

Private Function regValue_Exist(ByVal hKey As Long, ByVal sRegKeyPath As String, ByVal sRegSubKey As String) As Boolean
Dim lKeyHandle As Long
Dim lRet As Long
Dim lDataType As Long
Dim lBufferSize As Long
lKeyHandle = 0
lRet = RegOpenKey(hKey, sRegKeyPath, lKeyHandle)
If lKeyHandle <> 0 Then lRet = RegQueryValueEx(lKeyHandle, sRegSubKey, 0&, lDataType, ByVal 0&, lBufferSize)
If lRet = ERROR_SUCCESS Then
regValue_Exist = True
lRet = RegCloseKey(lKeyHandle)
Else
regValue_Exist = False
End If
End Function

Private Sub regDelete_Sub_Key(ByVal hKey As Long, ByVal sRegKeyPath As String, ByVal sRegSubKey As String)
Dim lKeyHandle As Long
Dim lRet As Long
If regValue_Exist(hKey, sRegKeyPath, sRegSubKey) Then
lRet = RegOpenKey(hKey, sRegKeyPath, lKeyHandle)
lRet = RegDeleteValue(lKeyHandle, sRegSubKey)
lRet = RegCloseKey(lKeyHandle)
End If
End Sub

Private Sub regCreate_LongValue(ByVal hKey As Long, ByVal sRegKeyPath As String, ByVal sRegSubKey As String, lKeyValue As Long)
Dim lKeyHandle As Long
Dim lRet As Long
Dim lDataType As Long
lRet = RegCreateKey(hKey, sRegKeyPath, lKeyHandle)
lRet = RegSetValueEx(lKeyHandle, sRegSubKey, 0&, REG_DWORD, lKeyValue, 4&)
lRet = RegCloseKey(lKeyHandle)
End Sub

Public Sub DisableCPL(sGroup As String, sKey As String)
Call regCreate_LongValue(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\" & sGroup, sKey, 1)
End Sub

Public Sub EnableCPL(sGroup As String, sKey As String)
Call regDelete_Sub_Key(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\" & sGroup, sKey)
End Sub

Public Function IsCPLEnable(sGroup As String, sKey As String) As Boolean
IsCPLEnable = Not regValue_Exist(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\" & sGroup, sKey)
End Function




Pada Form ketik or copy paste source di bawah ini :

[b]Dim bDirtyBit As Boolean
Dim asRegName(1 To 37) As String
Dim nExplorer As Long, nNetwork As Long, nSystem As Long, nDos As Long

Private Sub Command1_Click()
Dim n As Node
For Each n In TreeView1.Nodes
If n.Image = 1 Then Call DisableCPL(n.Parent.Text, n.Key)
If n.Image = 2 Then Call EnableCPL(n.Parent.Text, n.Key)
Next
Command1.Enabled = False
If SHRestartSystem(hWnd, "(Note: Beberapa Perubahan tidak memerlukan Restart)" & vbCrLf & vbCrLf & Chr$(0), Restart_Reboot) = vbYes Then
Unload Me
End
End If
End Sub

Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Form_Load()
Dim Root As Node
Dim s1 As String, s2 As String, n As Long
InitRegArray
With TreeView1.Nodes
For i = 1 To UBound(asRegName)
If i = nExplorer Then Set Root = .Add(, , , "Explorer", 3)
If i = nNetwork Then Set Root = .Add(, , , "Network", 3)
If i = nSystem Then Set Root = .Add(, , , "System", 3)
If i = nDos Then Set Root = .Add(, , , "Dos", 3)
Root.ExpandedImage = 4
n = InStr(1, asRegName(i), ",")
s1 = Left$(asRegName(i), n - 1)
s2 = Mid$(asRegName(i), n + 1)
.Add Root, tvwChild, s1, s2, Abs(IsCPLEnable(Root.Text, s1)) + 1
Next i
End With
Command1.Caption = "&Apply"
Command1.Enabled = False
Command2.Caption = "&Close"
Caption = "vbPoliEdit"
End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Command1.Enabled = True
bDirtyBit = True
If Node.Image = 1 Then Node.Image = 2 Else Node.Image = 1
End Sub

Private Sub InitRegArray()
nExplorer = 1
' Menu staff
asRegName(1) = "NoRun,Sembunyikan Menu Run"
asRegName(2) = "NoFind,Sembunyikan Menu Find"
asRegName(3) = "NoSetFolders,Sembunyikan Folders di Menu Settings"
asRegName(4) = "NoSetTaskbar,Sembunyikan Taskbar di Menu Settings"
asRegName(5) = "NoRecentDocsHistory,Sembunyikan Recent Menu Documents"
asRegName(6) = "ClearRecentDocsHistory,Bersihkan Recent Menu Documents"
asRegName(7) = "NoFolderOptions,Sembunyikan Folder Options"
'desktop staff
asRegName( 8 ) = "NoDeletePrinter,Lumpuhkan penghapusan printer"
asRegName(9) = "NoAddPrinter,Lumpuhkan penambahan printer"
asRegName(10) = "NoClose,Membuang printah Shutdown"
asRegName(11) = "NoSaveSettings,Tidak dapat menyimpan Settings"
asRegName(12) = "NoDesktop,Sembunyikan semua Items pada Desktop"
asRegName(13) = "NoDrives,Sembunyikan Drives dari Desktop"
asRegName(14) = "NoNetHood,Sembunyikan Network icon dari Desktop"
asRegName(15) = "NoInternetIcon,Sembunyikan Internet icon dari Desktop"
asRegName(16) = "NoPrinterTabs,Lumpuhkan Details dan General Pages"
'Network
nNetwork = 17
asRegName(17) = "NoNetSetup,Lumpuhkan Network Control Panel"
asRegName(18 ) = "NoNetSetupIDPage,Lumpuhkan Identification Page"
asRegName(19) = "NoNetSetupSecurityPage,Lumpuhkan Access Control Page"
asRegName(20) = "NoFileSharingControl,Lumpuhkan File dan Print Sharing Controls"
asRegName(21) = "NoFileSharing,Lumpuhkan File Sharing"
asRegName(22) = "NoPrintSharing,Lumpuhkan Print Sharing"
'System
nSystem = 23
asRegName(23) = "NoDispCPL,Lumpuhkan Display System Control Panel"
asRegName(24) = "NoDispBackgroundPage,Lumpuhkan Display Control Background Page"
asRegName(25) = "NoDispScrSavPage,Lumpuhkan Display Control Screen Saver Page"
asRegName(26) = "NoDispApperancePage,Lumpuhkan Display Control Apperance Page"
asRegName(27) = "NoDispSettingPage,Lumpuhkan Display Control Setting Page"
asRegName(28 ) = "NoConfigPage,Lumpuhkan Configuration Page"
asRegName(29) = "NoDevMgrPage,Lumpuhkan Device Manager Page"
asRegName(30) = "NoFileSysPage,Lumpuhkan File System Page"
asRegName(31) = "NoVirtMemPage,Lumpuhkan Virtual Memory Page"
asRegName(32) = "NoAdminPage,Lumpuhkan Remote Administration Page"
asRegName(33) = "NoProfilePage,Lumpuhkan User Profiles Page"
asRegName(34) = "NoPwdPage,Lumpuhkan Change Passwords Page"
asRegName(35) = "NoSecCPL,Lumpuhkan Password Control Panel"
' Dos
nDos = 36
asRegName(36) = "Disabled,Lumpuhkan MS-DOS prompt"
asRegName(37) = "NoRealMode,Lumpuhkan MS-DOS app at real mode"
End Sub[/b]


Ngegunaiinya tinggal kasih tanda ceklis tuk aktifkan registry yg dipilih, or buang tanda ceklis klo mang ga mau diaktifkan

Sebenernya pada program ini masih bisa ditambahin registry-registry Windows XP yang laennya. Tapi takut kepanjangan (padahal mah ane ga bisa) jadi ya Cuma segitu za. Klo mo tambahin registry yg lain silahkan tambahin sendiri za. Laughing Laughing Laughing

_________________
viva www.dudul-online.net
Back to top Go down
View user profile
jube
Being Duduls
Being Duduls


Number of posts : 2
Registration date : 2008-12-02

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Tue Jan 06, 2009 9:54 pm

hmmmmmmmmmm

walau buat pening tapi ane suka belajar yg buat pening

hayooooooooooo

semangaaaaaaaaaaaaaaaattttttttttt

majuuuuuuuuuuuuuu teruuuuuuuuuuussssssssssssss cheers
Back to top Go down
View user profile
Bhorzer
Moderators
Moderators


Male Number of posts : 227
Location : 192.168.1.5
Registration date : 2008-12-01

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Sat Jan 10, 2009 8:05 pm

3may wrote:
muantap bro... Idea

ijin copas bro....

silahkan mbah ;D
Back to top Go down
View user profile
3may
Moderators
Moderators


Male Number of posts : 200
Age : 103
Location : cerbon
Registration date : 2008-12-31

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Fri Jan 16, 2009 8:48 pm

thanks bro
dah ijinin copas
iya bro punya source wat deface lewat vb gak
buat pembelajaran jah Very Happy Very Happy

_________________
viva www.dudul-online.net
Back to top Go down
View user profile
3may
Moderators
Moderators


Male Number of posts : 200
Age : 103
Location : cerbon
Registration date : 2008-12-31

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Fri Jan 16, 2009 8:49 pm

Cool

_________________
viva www.dudul-online.net
Back to top Go down
View user profile
Bhorzer
Moderators
Moderators


Male Number of posts : 227
Location : 192.168.1.5
Registration date : 2008-12-01

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Fri Jan 16, 2009 10:04 pm

deface??

mksdnya Decompiler??


banyaakk... cri aja di google

Keywordnya "VB Decompiler"
Back to top Go down
View user profile
zh0row
Duduls Junior
Duduls Junior


Male Number of posts : 169
Age : 34
Location : dudul room
Registration date : 2008-11-18

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Tue Jan 20, 2009 7:35 pm

Bozz... ada yang punya link buat donlot VB terbaru ga?
Tapi yang full donlot.. Very Happy
Thx
Back to top Go down
View user profile
up&down
Moderators
Moderators


Male Number of posts : 34
Age : 31
Location : ++On My Chair++
Registration date : 2009-01-19

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Wed Jan 21, 2009 2:33 pm

aduh puyeng bro,,, Shocked
Back to top Go down
View user profile
Bhorzer
Moderators
Moderators


Male Number of posts : 227
Location : 192.168.1.5
Registration date : 2008-12-01

PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Wed Jan 28, 2009 12:45 pm

up&down wrote:
aduh puyeng bro,,, Shocked

sama Very Happy
Back to top Go down
View user profile
Sponsored content




PostSubject: Re: [SHARE] Cara nge-Buat Program AntiVirus Sendri   Today at 12:38 am

Back to top Go down
 
[SHARE] Cara nge-Buat Program AntiVirus Sendri
View previous topic View next topic Back to top 
Page 1 of 1
 Similar topics
-
» milk to share
» Share: GF and DF milk in Grand Rapids/Holland
» GTA - New Adoptive Parts looking for milk share!!
» **No longer available** Milk to Share for pickup in Loganville, GA (between Atlanta and Athens)
» Milk to share, Pittsburgh, PA

Permissions in this forum:You cannot reply to topics in this forum
The Duduls :: Computer & Technology :: Programmer Forum-
Jump to: