Jump to content

Banrukai

Members
  • Posts

    7
  • Joined

  • Last visited

Everything posted by Banrukai

  1. Thanks for the reply, I figured it was something very simple... Sometimes the simplest things can stump someone for hours, or even days. One thing though, where are you defining the previousValue? Something like this? $PROCESS = _Process_Open("Example.exe", $PROCESS_ALL_ACCESS, False) $VAR_OFFSET[2] = [0x102, 0x80] $VAR = _Process_ReadMemoryPointer($PROCESS, 0x008015D0, $VAR_OFFSET, "dword")) $VAR2_OFFSET[2] = [0x104, 0x80] $VAR2 = _Process_ReadMemoryPointer($PROCESS, 0x008015D0, $VAR2_OFFSET, "dword")) Local $previousValue = 0 Switch $value Case 26 if $value <> $previousValue Then GUICtrlCreateListViewItem(@MIN & @SEC & "|" & $VAR2, $Data) $previousValue = $value EndIf Case 16 if $value <> $previousValue Then GUICtrlCreateListViewItem(@MIN & @SEC & "|" & $VAR2, $Data) $previousValue = $value EndIf EndSwitch
  2. The issue is straightforward, you just don't want to help. I'm assuming because of one of the following reasons: My issue has to do with reading memory from another process You think this is for a game, therefore it would be against the rules of this forum To be honest, you're quite pushy, maybe I would do better to just seek out information on my own. Seeming how this is supposed to be a "General Help and Support" section, I'm getting neither help, nor a solution to my issue. This rather defeats the purpose of having this section. I haven't asked anyone to figure out any kind of address for the program I am reading memory from. The address '0x008015D0', and the offsets are just examples aswell, THEREFORE, there is no need to post any exe. The issue isn't particular to any exe, but rather memory reading in general. If you would like to test out the script above, then replace 'Example.exe' with any exe, and modify the target address/offsets with any valid readable address. As I've said many times, I am trying to achieve the following: Read memory address Select case if value = a certain value If the value is found, then post the results of the other address 'VAR2' into the ListView Continue loop The issue is that I only want the script to post the results when VAR changes. ( 26 or 16 ) I really don't understand the confusion. Case value = value, do action. <--- But only do the action one time, until the value changes again.
  3. Because it's not a control, it's a memory address. Much like an on and off switch. A window pops up, and the value is 26, then it closes, the value becomes 16. Depending on which state this window is in, the value will change then persist. If my script is constantly reading the value, then it will spam my list box, unless I manually change the value so it does not equal 26 or 16. I would release the exe, but I can't since it is one of our applications at work. I'm trying to create a workaround for an issue we are experiencing, until we get an update.
  4. The program I'm trying to read a memory value from doesn't matter, as I'm just using test scenarios. Any program would suffice. The only thing I need is: Read memory address value Log value in a ListView only one time Wait for the value you to change Log new value
  5. KryMemory.au3 has been uploaded. Example.exe is just that, an example. Is it something in the KryMemory that could make it only look for changed values?
  6. So, I'm trying to make kind of a simple logging list, but it's spamming the same value over and over when reading the memory address. I'm hoping there is a simple way to make it create a list entry each time the value changes, not just continuously until the value changes. Example: #include <KryMemory.au3> #include <GUIConstantsEx.au3> #include <GuiListView.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Memory List", 225, 212, 188, 125) $Data = GUICtrlCreateListView("Time|Data", 0, 0, 225, 188) _GUICtrlListView_SetColumnWidth($Data, 0, 50) _GUICtrlListView_SetColumnWidth($Data, 1, 200) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### $PROCESS = _Process_Open("Example.exe", $PROCESS_ALL_ACCESS, False) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE _Process_Close($PROCESS) Exit EndSwitch $VAR_OFFSET[2] = [0x102, 0x80] $VAR = _Process_ReadMemoryPointer($PROCESS, 0x008015D0, $VAR_OFFSET, "dword")) $VAR2_OFFSET[2] = [0x104, 0x80] $VAR2 = _Process_ReadMemoryPointer($PROCESS, 0x008015D0, $VAR2_OFFSET, "dword")) Select Case $VAR = 1 GUICtrlCreateListViewItem(@MIN & @SEC & "|" & $VAR2, $Data) Case $VAR = 2 GUICtrlCreateListViewItem(@MIN & @SEC & "|" & $VAR2, $Data) EndSelect WEnd The problem is, once VAR is set to any value, it will stay the same until changed. Which inturn makes the value get contantly posted to my ListView, instead of just one time. The only workaround I have is to _Process_WriteMemoryPointer() and change the value myself, but it doesn't work all the time. Sometimes the value will still get posted 2 or 4 times per instance. I think there is a better way to do it. KryMemory.au3
  7. There is a simpilar way. #include <KryMemory.au3> $PROCESS = _Process_Open("Example.exe", $PROCESS_ALL_ACCESS, False) $VAR1 = _Process_ReadMemory($PROCESS, 0x008015D0, "type")) ; type = ( byte, float, dword, char[], byte[] ... etc ) $VAR2_OFFSET[2] = [0x01, 0x02] $VAR2 = _Process_ReadMemoryPointer($PROCESS, 0x008015D0, $VAR2_OFFSET, "type")) ; type = ( byte, float, dword, char[], byte[] ... etc ) $VAR3 = _Process_WriteMemory($PROCESS, 0x008015D0, $Value, "type")) ; $Value = the value you want to write to memory. $VAR4_OFFSET[10] = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09] $VAR4 = _Process_WriteMemoryPointer($PROCESS, 0x008015D0, $VAR4_OFFSET, $Value, "type")) _Process_Close($PROCESS) KryMemory.au3
×
×
  • Create New...