Új hozzászólás Aktív témák
-
acélkemény
tag
-
ArchElf
addikt
válasz acélkemény #1152 üzenetére
Ez tényleg acélkemény volt, tuskó
Sorry Bumbi, hogy nem tudtam foglalkozni vele. De látom szerencsére megoldódott.
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Bumbi0
csendes tag
válasz ArchElf #1153 üzenetére
Meg viszont, újabb gondom van, amit sehogy nem tudok megoldani és a Google sem segített és más fórumok sem.
Egy textboxhoz szeretnék adatot küldeni, de a WM_SETTEXT nem felüírja azt, hanem hozzáfűzi és a WM_CLEAR nem hajlandó kitörölni a tartalmát.A másik, hogy SendMessage-el és Post Message-el is próbáltam egér kattintást küldeni egy window-n lévő gombra, viszont nem kattint rá. Paintbe megnéztem és ott viszont minden gond nélkül kattint. Sajnos a gombnak nem elérhető a handle-je Spy++-al így arra nem tudok hivatkozni csak a formon lévő koordinátára. A SetCursor és Mouse_event párosítás nem jó, mert gyakran elő fordul. hogy a gomb takarásban van más program által, ezért a formra hivatkozok jelenleg.
Előre is köszi a segítséget!
Egyébként valóban többet kellett volna a Google-ben keresnem
-
Bumbi0
csendes tag
Programot kell írnom, ami folyamatosan figyeli egy alkalmazás processeit és egy stringet keres az egész memórai területén, amit ezek a processek küldenek a memóráiba. Ha megvan a string, akkor meg kell nézni, hogy a memóra melyik címén található és attól a címtől kezdve kiolvasni az egész stringet/sor/üzenetet, mert ez a keresett string az elfogni kívánt üzenetek kezdő szava.
És ezt mindannyiszor meg kell csinálni loopolva, ahányszor a program vagy proccessek hozzá akarnak férni a memóriához.De az a baj, hogy lövésem sincs hogy kezdjek neki.
Előre is köszönöm a segítséget!
-
ArchElf
addikt
Ezt managelt kódban már valószínűleg nem fogod tudni megcsinálni. Ez már inkább C/C++ terület (esetleg megcsinálhatod C#-ban is nem managelt módban)...
Bizonyos részeit egyszerűen meg lehet csinálni, pl futó processzek listája. De ezt is csak lekérdezgetni tudod bizonyos időközönként.
Találtam egy kis segítséget:
http://www.codeproject.com/KB/threads/MDumpAll.aspxAE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Bumbi0
csendes tag
-
ArchElf
addikt
A válasz ott van a linkelt oldalon:
"There is one catch here though. In order for this to work, I call the AdjustPrivileges function in the same module as WinMain to give this application debug rights. Otherwise OpenProcess with PROCESS_ALL_ACCESS fails. This code is straight out of the MSDN Knowledge base - Article ID: Q131065"
Bár a MS oldalon azt írja, hogy csak a rendszerprocesszek debuggolásához kell a SeDebugPrivilege, de valószínűleg a kérdéses API nem működik nélküle, függetlenül attól, hogy nem system, hanem user process memóriáját akarod megnézni.AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Vasinger!
nagyúr
Az előbb eltévedtem, ide kellett volna ezt feltennem: [link]
Pls help!
-
bpx
őstag
válasz Vasinger! #1162 üzenetére
1. beolvasás Console.ReadLine()-nal
stringeken működik a + operátor, azzal össze lehet fűzni őket2. pl. egy ciklussal végigmész a karaktereken egyesével (a string-et lehet indexelni, ami egy karaktert ad vissza - szoveg[0]), és ha szóköz, akkor törlöd (string.Remove())
végén meg string.Length megadja a string hosszát3. megkeresed az utolsó szóközt (string.LastIndexOf(' '), így a dupla vezetéknevekre is működik), és a string utána levő részét veszed (string.SubString())
[ Szerkesztve ]
-
bpx
őstag
válasz Vasinger! #1164 üzenetére
1.
string nev ="Dr. " + Console.Readline();2.
string szoveg = Console.ReadLine();
for (int i = 0; i < szoveg.Length; )
{
if (szoveg[i] == ' ')
{
szoveg = szoveg.Remove(i, 1);
continue;
}
i++;
}
Console.WriteLine("{0} karakter", szoveg.Length);3.
string nev = Console.ReadLine();
nev = nev.Substring(nev.LastIndexOf(' ') + 1); -
bpx
őstag
válasz Vasinger! #1167 üzenetére
ezügyben már írtál ide egyszer^^
beírod a szöveget, a program feldolgozza, kiírja az eredményt, majd kilép, mert nincs más dolga - ez olyan gyorsan történik, hogy nem látsz belőle semmit, csak azt hogy kilép- indíthatod debug nélkül (Ctrl + F5), és akkor a végén még vár egy bármilyen billentyűleütésre
- vagy beírsz a program legvégére egy Console.Readline()-t és akkor még vár egy enterre mielőtt kilépne[ Szerkesztve ]
-
Bumbi0
csendes tag
válasz ArchElf #1161 üzenetére
Úgy néz ki elakadtam!
Ennek http://www.codeproject.com/KB/threads/winspy.aspx és a fentebb beszúrt linkeknek a segitségével próbálom megoldani, hogy más program memóriájában tudjak keresni.
A most linkelt linken a 3. módszer próbálom megvcalósitani, a kód injektálást a program memóriájába. Ott egy ilyen összegzés látható:
Now, we can summarize this technique in the following steps:
1, Retrieve a HANDLE to the remote process (OpenProces).
2, Allocate memory in the remote process's address space for injected data (VirtualAllocEx).3, Write a copy of the initialised INJDATA structure to the allocated memory (WriteProcessMemory).
4, Allocate memory in the remote process's address space for injected code.
5, Write a copy of ThreadFunc to the allocated memory.
6, Start the remote copy of ThreadFunc via CreateRemoteThread.
7, Wait until the remote thread terminates (WaitForSingleObject).
8, Retrieve the result from the remote process (ReadProcessMemory or GetExitCodeThread).
9, Free the memory allocated in Steps #2 and #4 (VirtualFreeEx).
10, Close the handles retrieved in Steps #6 and #1 (CloseHandle).Elvileg az első kettőt megcsináltam, de nem értem hogy milyen kódot kéne bejuttatnom a process memóriájába!
Az előző hozzászólásban emlitett linkenhez (http://www.codeproject.com/KB/threads/MDumpAll.aspx) hasonló dolog kellene, hogy csak simán a Process memóriában stringet keresni, az egész C-ben van megirva és nem sokat értek belőlle!
Sajnos nem tudom, hogy folytathatnám tovább. Azt nem értem, hogy a ProcDumpos linken nem is emlitenek DLL/kód injektálást és tud a memóriában olvasni, a másik módszernél akkor miért kell?
Előre is köszönöm szépen a segitségeteket!
Eddig igy néz ki a kód:
[DllImport("user32.dll", SetLastError=true)]
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);[DllImport("kernel32.dll")]
static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, UInt32 dwProcessId);[Flags]
enum ProcessAccessFlags : uint
{
All = 0x001F0FFF,
Terminate = 0x00000001,
CreateThread = 0x00000002,
VMOperation = 0x00000008,
VMRead = 0x00000010,
VMWrite = 0x00000020,
DupHandle = 0x00000040,
SetInformation = 0x00000200,
QueryInformation = 0x00000400,
Synchronize = 0x00100000
}[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, UInt32 dwSize, AllocationType flAllocationType, MemoryProtection flProtect);[Flags]
public enum AllocationType : uint
{
Commit = 0x1000,
Reserve = 0x2000,
Decommit = 0x4000,
Release = 0x8000,
Reset = 0x80000,
Physical = 0x400000,
TopDown = 0x100000,
WriteWatch = 0x200000,
LargePages = 0x20000000
}[Flags]
public enum MemoryProtection : uint
{
Execute = 0x10,
ExecuteRead = 0x20,
ExecuteReadWrite = 0x40,
ExecuteWriteCopy = 0x80,
NoAccess = 0x01,
ReadOnly = 0x02,
ReadWrite = 0x04,
WriteCopy = 0x08,
GuardModifierflag = 0x100,
NoCacheModifierflag = 0x200,
WriteCombineModifierflag = 0x400
}void str_Hotkey()
{
IntPtr hwnd, processHandle, remoteBuffer;
uint threadID, procID = 0;
const uint bufferSize = 1024;hwnd = GetWindowUnderCursor(); // Window handle-jének az átadása
GetWindowThreadProcessId(hwnd, out procID); // Window handle-ből ProcessID-nek a visszakapása
processHandle = OpenProcess(ProcessAccessFlags.All, true, procID); // Elvileg a process megynitása
remoteBuffer = VirtualAllocEx(processHandle, IntPtr.Zero, bufferSize, AllocationType.Commit, MemoryProtection.ExecuteWriteCopy); // Elvileg a process memóriájában foglal le memóriát a kódnak.}
-
Immy
őstag
Üdv
Képfelismerős programot akarok írni a közeljövőben és nem nagyon találok hozzá anyagot.
Kártyalapokat kellene felismernie --> csak 52 lehetőség közül kell kiválasztani a jót.(más: az ocr programok csak betűt ismernem fel?)
Tudom hogy nagy fába vágom a fejszét, de nem 1hét leforgása alatt akarom megcsinálni a programot ami screenshot alapján megmondja milyen kártyalap van kézben.
Köszönöm előre is a válaszokat:
Immy
Apró: https://hardverapro.hu/aprok/hirdeto/immy/index.html
-
Cyno
tag
Sziasztok!
Írok egy kis scriptet, ami állományokat mozgat ide-oda, és a végén adott helyen átnevezi azokat. Na itt akadtam el.
Ezzel póbálkoztam:
string[] fileNames2 = Directory.GetFiles(destinationPath);
// string fileNames8;
Console.WriteLine("Az átnevezni kivánt állományok");
foreach (string str in fileNames2)
{
Console.WriteLine("Állomány: {0}", str);
Console.WriteLine("Az átnevezés után az állományok: {0}", str.Remove(8));
}
De semmi eredménye. Arra rájöttem, hogy string típusú tömbél nem működik a .Remove. Tulajdonképen az állományok kiterjesztését szeretném csak eltávolítani, adott nevű(hosszúságú) file-oknál. -
ArchElf
addikt
Úgy nézem kimaradt a sor, ahol átneveznéd a fájlokat
Kiterjesztés megváltoztatására:
Path.ChangeExtension(string path, string extension);
vagy tudsz mozgatni fájlokat a fileinfo osztály segítéségvel.AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
ArchElf
addikt
fileinfo.moveto plusz:
//3 char levágása
string filename = @"c:\akármi\akárhol\123456.txt";
string new_filename = filename.Substring(0, filename.LastIndexOf('\\')+1) + filename.Substring(filename.LastIndexOf('\\') + 4);Ez most csak bemutásra, egy kis hibakezelés azért kellene még bele, pl filenév hossz ellenérzés.
AE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Briganti
tag
Hello, egy kis segitsegre lenne szuksegem:
Van egy dataset-em, amit a kovetkezo keppen toltok fel:
public string qFirme = "SELECT f.firma_cod, f.denumire, f.cif, j.denumire, f.tip " +
"FROM firme AS f INNER JOIN judet AS j " +
"ON f.judet=j.judet_cod";
...
private void frmLoad_Load(object sender, EventArgs e)
{
conn = new OleDbConnection(strconn);
OleDbCommand cFirme = new OleDbCommand(qFirme, conn);
OleDbCommand cJudete = new OleDbCommand(qJudete, conn);
DataTable tdFirme = new DataTable("Firme");
DataTable tdJudete = new DataTable("Judete");
OleDbDataAdapter daFirme = new OleDbDataAdapter();
OleDbDataAdapter daJudete = new OleDbDataAdapter();
daFirme.SelectCommand = cFirme;
daJudete.SelectCommand = cJudete;
daFirme.Fill(tdFirme);
daJudete.Fill(tdJudete);
dsFirmAdmin.Instance.Tables.Add(tdFirme);
dsFirmAdmin.Instance.Tables.Add(tdJudete);
}Van egy frmAdd ahol hozzaadok a firme tablahoz egy rekordot, es van egy frmFirma ahol kilistazom a firme tablazatot ... ezt a dataGridViewet ugy toltom fel hogy:
public void fillDataGrid()
{
// A DataGrid feltöltése.
try
{
dtview = dsFirmAdmin.Instance.Tables[0].DefaultView;
dgFirma.DataSource = dtview;
}
catch (Exception e)
{
MessageBox.Show("Hiba az adatbazis megnyitasanal: " + e.Message,"Vizualizare Firma",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}Miutan hozzaadtam egy rekordot valahogy kellene frissitsem a datasetet, mert a form Shown esemenyen hivodik meg a fillDataGrid() fuggveny.
valami olyasmi kellene hogy:
dsFirmAdmin.Instance.Tables[1].Refresh();
.... de nincs
koszi elore is!
If debugging is a process of removing bug, then programming is a process of putting them in ...
-
Briganti
tag
megoldottam ... kulon fugvenybe raktam minden feltoltest, s csak hivogatom azokat
If debugging is a process of removing bug, then programming is a process of putting them in ...
-
Briganti
tag
hogyan lehet ellenorizni hogy egy datasetben letezike egy dataTable?
nem talaltam semmi jobbat, es megoldottam egy try ... catch -el, de sztem van ennel jobb megoldas Igy nez ki az en megoldasom, es az lenne a lenyeg hogy ha mar letezik a dataTable akkor azt uritse ki ...
try { dsFirmAdmin.Instance.Tables["Firme"].Clear(); }
catch { }
dbAdapter.Fill(dsFirmAdmin.Instance, "Firme");... valahogyan csak le lehet ellenozrizni hogy letezike az a tabla, gondoltam egy for-l vegig menni az egesszen, de annal meg ez is jobbnak tunik
If debugging is a process of removing bug, then programming is a process of putting them in ...
-
Immy
őstag
Na arra rájöttem, hogy az újabb póker progrikban már levan tiltva ez a hookolás vagy valami csűrés csavarás útján nemlehet lekérdezni a textjeit.
Szóval marad a favágó módszer és megpróbálkozok a kártyalapok felismerésével.
Képek összehasonlítása már megy.Viszont olyan gondom van, hogy 1 bizonyos ablakról hogyan lehet screenshot-ot csinálni?
Üdv: Immy
Apró: https://hardverapro.hu/aprok/hirdeto/immy/index.html
-
ArchElf
addikt
Valószínűleg nem texbox-ba írja ki az értékeket, hanem mondjuk egy sima control-ra grafikusan (Graphics DrawString). Ezt is meg lehet hackelni (már ha a hook-olás már megy), csak el kell térítened a megfelelő függvényt, hogy megkapd az átadott értéket.
Ha ez nem megy, megpróbálkozhatod a kontrol helyét meghatározni és utána leszedni a képet:
http://www.vcskicks.com/capture-control-graphics.phpAE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Immy
őstag
válasz Briganti #1187 üzenetére
Screenshot ablakról megoldottam. Form load-kor betöltöm combobox-ba az aktuálisan futó programokat. Kiválasztok 1-et és lekérdezem annak a bal felső sarkának a koordinátáit + a szélességet és magasságot.
+ beleraktam még1 bitmap to jpeg konvertert is.
Apró: https://hardverapro.hu/aprok/hirdeto/immy/index.html
-
Immy
őstag
válasz ArchElf #1188 üzenetére
Üdv
A hookolásról csak olvastam, saját magam még nem próbáltam ki, mert normális leírást, tutorialt nem találtam hozzá.
Controlokat hogyan tudom lekérni? (bocsi, de ez nekem még magas)(Nem hackelni akarok hanem csak adatokat kinyerni, ami akár lehet kép, akár szöveg, de szerintem a szöveg nehezebb)
Figyeltem a hálózati forgalmat wireshark-al:
https kapcsolaton megy a forgalom + azt hiszem rsa2-es védelem van még a küldött/fogadott szövegeken --> ez számomra feltörhetetlen.Apró: https://hardverapro.hu/aprok/hirdeto/immy/index.html
-
hBd
csendes tag
Udv mindenkinek!
Lenne egy kerdesem ado.net temaban, nos egy olyan alkalmazast keszitek ahol tetszoleges *.mdb (acces adatbazis) fajlokat lehet megnyitani, azok tablainak tartalmat kiiratni, komboboxbol lehet kivalasztani hogy melyik tablat szeretnem megnyitni stb.
Ahol elakadtam az a uj elem hozzaadasa egy adott tablahoz. Mivel nem tudom hogy hany oszlopa van a tablanak elore, ezert egy tombbe szedi ki a tablaneveket, nos ez meg is van csak mikor szeretnem feltolteni az adatokat, akkor van a gond.
Az alap sql parancs az ugye INSERT INTO tablanev (oszlopok...) VALUES (adatok...)
es itt nem tudom hogy lehetne megoldani hogy az sql parancsba hogy tudnam a valtozo szamu oszlop neveket berakni, no meg az adatok az ugyanugy. Mivel string be kene tarolni a parancsot, ezert for nemigazan mukodik pedig az kene :|
valami otlet hogy tudnam megoldani ?arch linux juuzer
-
ArchElf
addikt
Hát, ha a string műveletek nem mennek... pl (nem futtatható, csak pszeudokód):
Ez a legegyszerűbb:
List<string> Mezőnevek;
string insertcolstr = "";
foreach (stirng Név in Mezőnevek)
insertcolstr += "[" + Név +"],";
insertcolstr.TrimEnd(',');
List<string> MezőÉrtékek;
string inservalstr = "";
foreach (stirng Érték in MezőÉrtékek)
inservalstr += "[" + Érték +"],";
inservalstr.TrimEnd(',');
string insertstr = "INSERT INTO tablanev ({0}) VALUES ({1})";
DbCommand cmd = connection.CreateCommand();
cmd.CommandString = string.Format(insertstr, insertcolstr, inservalstr);
cmd.ExecuteNonQuery();[De ez bizonságosabb:
Dictionary<string, object> Mezőértékek;
string insertcolstr = "";
foreach (stirng Név in Mezőértékek.Keys)
{
insertcolstr += "[" + Név +"],";
inservalstr += "@" + Név +",";
}
insertcolstr.TrimEnd(',');
string insertstr = "INSERT INTO tablanev ({0}) VALUES ({1})";
foreach (stirng Érték in MezőÉrtékek)
DbCommand cmd = connection.CreateCommand();
cmd.CommandString = string.Format(insertstr, insertcolstr, inservalstr);
foreach (object Érték in Mezőértékek.Values)
cmd.Parameters.Add(Érték);
cmd.Prepare();
cmd.ExecuteNonQuery();AE
[ Szerkesztve ]
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
-
Briganti
tag
Egy kis erorral gyult meg kicsit a bajom, es nem talalom sehol a megoldast
van egy dbUtils.cs osztalyom, amibe van nehany adatbazis muvelet vegzo fugveny .... pontosabban van egy a torlesre, ami igy nez ki:
public static void executeDeleteQuery(string qText)
{
try
{
openConnection();
dbAdapter = new OleDbDataAdapter();
dbCommand = new OleDbCommand(qText, dbConnection);
dbAdapter.DeleteCommand = dbCommand;
dbAdapter.DeleteCommand.ExecuteNonQuery();
closeConnection();
}
catch
{
MessageBox.Show("Hiba a torlesnel");
}
}a hivas pedig igy nez ki:
string query = "DELETE FROM firme WHERE firma_cod='" + selected_id + "'";
dbUtils.executeDeleteQuery(query);A sor amire kiirja, es amit kiir:
dbAdapter.DeleteCommand.ExecuteNonQuery();
Data type mismatch in criteria expression.
Tobb mukodo peldaba latam hogy igyvan, es mukodik, please valaki segitsen
If debugging is a process of removing bug, then programming is a process of putting them in ...
-
Briganti
tag
válasz ArchElf #1197 üzenetére
ezt kifejtened kicsit megkerlek?
nem ertem hogy milyen parameterekre gondolsz ... a fuggvenybe adjam at az adatokat (melyik tablabol s mit akarok torolni), es ott epitsem fel a query stringet?
If debugging is a process of removing bug, then programming is a process of putting them in ...
-
bpx
őstag
válasz Briganti #1198 üzenetére
szerintem arra gondolt, hogy a query stringet hivatalosan nem így szokás "összeollózni" változóbehelyettesítéssel, hanem van egy kész query stringed, amiben jelölöd hogy mik a paraméterek, majd a megfelelő függvényekkel megadod, hogy melyik paraméter helyére melyik változót értéke kerüljön (ami azért jobb így, mert le lesz ellenőrizve, hogy mi kerül oda, és ezáltal véd az sql-injection ellen)
no meg valamennyire olvashatóbb is lesz szerintem
[ Szerkesztve ]
-
ArchElf
addikt
válasz Briganti #1198 üzenetére
Igen, ahogy zeratul kolléga is mondja...
OleDbParameterAE
Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- iPad Air 10.9" - 2022, M1, Apple garancia, doboz, kék
- iPad Air 10.9" - 2022, M1, nanoSIM, Apple garancia, doboz, szürke
- Macbook Pro 16" - i9 és i7, 32/512GB, 4GB Radeon, touchbar, garancia, szürke
- Macbook Pro 15" - 2018, 6 mag i7, 16/256 GB, 4GB Radeon, 83 ciklus, garancia, ezüst (02)
- Macbook Pro 15" - 2017, 4 mag i7, 16/256 GB, 4GB Radeon, 99%, garancia, doboz, szürke