Jump to content
Sign in to follow this  
TrickyDeath

String, interger and binary stuff question

Recommended Posts

Hello everyone,

Again here with my new question.

I do have a value what is "text" string, what i read from memory adress, but i do not understand when i convert it, why i geting only the first 4 letter from the word...

I was reading how does it storeing in memory, but i am not 100% sure, i did understand right. :(

Anyone can explain how does it work? Or why i get only the first 4 letter only?

Ps.:

Useing Nomadmemory.

BinaryToString($MemRead, 1), 0, 0

The valuse is correct, if i do not convert it at all, but the valuse includeing only numbers. I tried different convert way, but nothing.


Sry for my bad English, and double sry, but I am learning AutoIT language by myself. :)

[u]Tricky[/u]

You can't teach a man anything, you can only help him, find it within himself. (Galileo Galilei)

Share this post


Link to post
Share on other sites

I wana read commands and those commands can be short how short i want, but i do not wana use 4 letter length strings for command. My problem is this memory storeing thing is new for me, so i am on just about the begning.

I made a GUI with 1 edit and 3 different button on it. Each button storeing the text from Edit in the same value.

I did used Cheat Engine to find the adress for it, and in that program it showeing me the full lengh of the string, but with AutoIT i see only the first 4 letter somehow, and i could not find out why. BTW the GUI is just for test, cause i can try make it work w/o NET connection. Once it will work, i can change the process. Unfortunately skype and viber do not have any controll what i can read with autoIT to read the messages what i am geting or sending. :(

At least i did not found anything like that.

One sec i put the code here in new post, just let me find it.


Sry for my bad English, and double sry, but I am learning AutoIT language by myself. :)

[u]Tricky[/u]

You can't teach a man anything, you can only help him, find it within himself. (Galileo Galilei)

Share this post


Link to post
Share on other sites

#include <NomadMemory.au3>
#include <Array.au3>
#include <String.au3>

#Region Communication List
Global $System[8][2], $Answares[6]
Global $MemRead, $Value, $OrderRegister, $OrderList
;Order List
$System[0][0] = "Shotdown PC" ;Shotdown PC
$System[1][0] = "Open emails"
$System[2][0] = "Undeclared"
$System[3][0] = "Undeclared"
$System[4][0] = "Undeclared"
$System[5][0] = "Undeclared"
$System[6][0] = "Undeclared"
$System[7][0] = "?"

;Function List
$System[0][1] = "ShotDown_PC"
$System[1][1] = "Open_Emails"
$System[2][1] = "Undeclared"
$System[3][1] = "Undeclared"
$System[4][1] = "Undeclared"
$System[5][1] = "Undeclared"
$System[6][1] = "Undeclared"
$System[7][1] = "Help"

;Answare List
$Answares[0] = "Login Failed"
$Answares[1] = "Incorrect Username and / or Password!"
$Answares[2] = "Acces Denide!"
$Answares[3] = "Acces Granted! Wellcome!"
$Answares[4] = "Undeclared"
$Answares[5] = "Undeclared"

$OrderList = $System[0][0] & @CRLF & $System[1][0] & @CRLF & $System[2][0] & @CRLF & $System[3][0] & @CRLF & $System[4][0] & @CRLF & $System[5][0] & @CRLF & $System[6][0] & @CRLF & $System[7][0]
#EndRegion Communication List

_Main()

While 1
    Sleep(100)
WEnd

Func _Main()
    if ProcessExists("Memtest.exe") = 0 Then
        Run("Memtest.exe", "G:\_Instal\4GL\AutoIT\Scripts\Windows\")
    EndIf
    MemoryOpen()
EndFunc   ;==>_Main

#Region - Work together !!!
Func MemoryOpen() ;Work properly !!!
    ;Reading the value from the Process searched Memory Adress

    While 1
        $Process = _MemoryOpen(ProcessExists("Memtest.exe"))
        ;$Process = _MemoryOpen(ProcessExists("Memtest.exe"))
        If Not @error Then
            $MemRead = _MemoryRead("0x" & "0095CD48", $Process)
            ;$MemRead = _MemoryRead("0x" & "0095A578", $Process)
            ToolTip(BinaryToString($MemRead, 1), 0, 0)
            If $OrderRegister <> $MemRead Then
                $OrderRegister = $MemRead
                _Arguments()
            EndIf
            _MemoryClose($Process)
        EndIf
        Sleep(100)
    WEnd
EndFunc   ;==>MemoryOpen

Func _Arguments()
    For $i = 0 To UBound($System) - 1
        If $MemRead = $System[$i][0] Then
            Call($System[$i][1])
        EndIf
    Next
EndFunc   ;==>_Arguments
#EndRegion - Work together !!!

The argument functions include only 1 messagebox message to see it work or not.

Do u need the memtest.exe code as well? also made with autoIT.

nvm, i post that as well.

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Memtest", 140, 170)
$Input1 = GUICtrlCreateInput("", 10, 10, 120, 21)
$btn = GUICtrlCreateButton("Number", 10, 40, 120)
$btn2 = GUICtrlCreateButton("String", 10, 70, 120)
$btn3 = GUICtrlCreateButton("Binary", 10, 100, 120)
$btn4 = GUICtrlCreateButton("Normal", 10, 130, 120)
GUISetState(@SW_SHOW)

Local $Text

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $btn
            $Text = Number(GUICtrlRead($Input1))
        Case $btn2
            $Text = String(GUICtrlRead($Input1))
        Case $btn3
            $Text = Binary(GUICtrlRead($Input1))
        Case $btn4
            $Text = GUICtrlRead($Input1)
    EndSwitch
WEnd

If have any other question let me know.


Sry for my bad English, and double sry, but I am learning AutoIT language by myself. :)

[u]Tricky[/u]

You can't teach a man anything, you can only help him, find it within himself. (Galileo Galilei)

Share this post


Link to post
Share on other sites

you need to specify the length to read, default is a dword (4 bytes).

$MemRead = _MemoryRead("0x" & "0095CD48", $Process, "char[80]")
Edited by Geir1983

Share this post


Link to post
Share on other sites

I would be happy if we have a nice help file for that nomadmemory, but since that is just a home made function... the description not telling you everything. I like AutoIT help file, you can learn so much thing, without comming to forum all the time with any single simple question.

What does "char[80]" mean exactly?


Sry for my bad English, and double sry, but I am learning AutoIT language by myself. :)

[u]Tricky[/u]

You can't teach a man anything, you can only help him, find it within himself. (Galileo Galilei)

Share this post


Link to post
Share on other sites

like you said, nomad.au3 is not part of the autoit package.. but it does have documentation for each of the functions inside the source code.

char[80] means it will read 80 characters (letters numbers etc), I did not test it but think it should work?

Share this post


Link to post
Share on other sites

I will chek it, just have to turn on my notebook, cause i am working on that at work, when i do have too much free time and nothing to do. :D

Actualy i start codeing on my mobile phone, then the boss will not realy notice what i do. :D

When the code is done and i go home, i jsut send it to my PC, so i can test it and see it is work or not.


Sry for my bad English, and double sry, but I am learning AutoIT language by myself. :)

[u]Tricky[/u]

You can't teach a man anything, you can only help him, find it within himself. (Galileo Galilei)

Share this post


Link to post
Share on other sites

Ok i did test your example, and work perfect. Thank you for your help. Now i can continue to work on rest of the code to make the whole communication between PC and my phone. :-)


Sry for my bad English, and double sry, but I am learning AutoIT language by myself. :)

[u]Tricky[/u]

You can't teach a man anything, you can only help him, find it within himself. (Galileo Galilei)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By nacerbaaziz
      good morning sirs.
      please i have a request from you.
      i have an variable to Read a data from a file
      this data is Encrypted
      and when i read it i Decrypte it.
      for that i need a function to Write a ini data to string.
      ;#Function# ===================================================================================================================== ; Name............: _IniReadFromString ; Description.....: Returns the value of a key in a specific section of an ini-formatted string ; Syntax..........: _IniReadFromString($szInput, $szSection, $szKey, $Default) ; Parameters......: ;   $szInput - The string that contains data in ini format ;   $szSection   - The sectionname (just as in IniRead) ;   $szKey   - The keyname (just as in IniRead) ;   $Default - The default value if the key does not exist or reading failed (just as in IniRead) ; Return values ..: ;   Success  - Returns the read value ;   Failure  - Returns $Default ; Author .........: FichteFoll ; Remarks ........: Works for Unicode as well as for ANSI ; Related ........: IniRead, _IniReadSectionFromString ; Link ...........; See on top ; Example ........; $var = _IniReadFromString(StringFormat("[Sect]\r\nMyKey1=value1\r\nMyKey2=value2"), "Sect", "MyKey2", "no_value") ; =============================================================================================================================== Func _IniReadFromString($szInput, $szSection, $szKey, $Default) $szInput = StringStripCR($szInput) ;~  Local $aRegMl = StringRegExp($szInput, "\[" & __StringEscapeRegExp($szSection) & "\]\n+(?:[^\[].*?=.*\n)*" & __StringEscapeRegExp($szKey) & "=(.*)\n?(",3) Local $aRegMl = StringRegExp($szInput, "\[" & __StringEscapeRegExp($szSection) & "\]\n+(?:[^\[].*?=.*\n)*" & __StringEscapeRegExp($szKey) & "=(.*)\n?", 3) If @error Then Return SetError(1, 0, $Default) ; key not found    Return $aRegMl[0] EndFunc;==>_IniReadFromString ; ############################################################################################################################### ; =============================================== ; = Internal Use Only ; =============================================== Func __StringEscapeRegExp($szExp) Return StringRegExpReplace($szExp, "([\(\)\[\]\{\}\\\/\?\.\\|\+])", "\\$1") ; ()[]{}\/?.|+ EndFunc;==>__StringEscapeRegExp like this  function Read the ini from string.
       
       
      please ihelp me
      thanks in advance
    • By nacerbaaziz
      hello sirs,
      i have searched allot about an function that can  read the INI file as a  string
      i mean function to read the ini files from string and not from the file directly.
      i finally found an UDF that do what i want
      but unfortunately all the functions work,  but the function that i want it not working.
      this is the udf
      the function that  i need is _IniReadFromString
      this is the function

      Func _IniReadFromString($szInput, $szSection, $szKey, $Default) $szInput = StringStripCR($szInput) Local $aRegMl = StringRegExp($szInput, "\[" & __StringEscapeRegExp($szSection) & "\]\n+(?:[^\[].*?=.*\n)*" & __StringEscapeRegExp($szKey) & "=(.*)\n?(", 3) If @error Then Return SetError(1, 0, $Default) ; key not found Return $aRegMl[0] EndFunc;==>_IniReadFromString
      i hope that any one can help me
      thank you in advance
      iniex.au3
    • By Stew
      (Edited from original.  Please note that I AM NOT AN AUTOIT EXPERT.  I write code using Autoit frequently but I am no expert, especially when it comes to I/O.  So any remarks that start with "Why did you..." can be answered by referring to the first sentence.  This project was done in Autoit because of an interface I built to display the data.)
      Attached is a program and ascii input file I wrote to read stock price data, convert it to binary and then read it back into the program in binary.  The goal was to show increased performance for reading the files in binary and provide a demo on how to read/write binary for int32, int64, double and strings for anyone who might find it helpful.  The results on my PC show the following:
      Time to read ascii file only: 456.981951167202
      Ascii read & process time: 6061.83075631701
      Binary write file time: 14787.9184635239
      Time just to read binary file: 42.418867292311
      Binary read and process time: 4515.16129830537
      A couple things to note:
      1) The 32 MB ascii file took 10x longer to read than the 15 MB binary file.  Not entirely sure why.  Both were read into a buffer.
      2) The Binary write takes a long time but I made no effort to optimize this because the plan was to write this file one time only so I don't mind if it takes longer to write this file.  I care much more about how long it takes to read the file because I will be reading it many times.
      3) There was a modest gain in converting the ascii file to binary in terms of file size and reading speed.
      So big picture... not sure it's worth the effort to convert the files to binary even though most of the data is numerical data in the binary file.  That was actually surprising as I expected there would be more of a difference.  Any ideas on how to get the binary data to read at a faster rate would be great.
       
      binary.au3
      2019_02_08.zip
    • By careca
      This is another take on string triggers, triggers on specific strings.
      Able to simple text pasting,
      opening links (as long as there's a www. http:\\ or https:\\ at the beggining)
      and is able to open applications, if there is a parameter in the parameter field, it uses it.
      The user selects the modifier key, and then uses a combination of that key with a couple others to perform tasks like
      screenshot the active window, (modkey + prtscr), turn off the screen (modkey + pause / break),
      open clipboard string in registry (modkey + R), change system volume (modkey + arrouw up/dn).
      The following keys pressed at the same time prompt for shutdown: S+D+T
      The following keys pressed at the same time prompt for restart: S+R+T
      Middle mouse button click on titlebar minimizes to tray, or a left mouse button click in the icon in the tray also minimizes.
      Trigger is set off by space or enter, and timeouts after 3 seconds.
      Shows your external, lan, and gateway ip's, can refresh with right mouse click, and opens the default browser if the correspondent button is pressed.
      Able to change system volume by a set percentage, reading from the inputbox the number the user sets, if 0 or empty uses system default.
      I made this because the existing string trigger applications didn't do it for me for a number of reasons.
      I did this for me, but if someone finds it useful all the better.
    • By Jeep
      Here is an other UDF for string handling :
      Date handling
      _StringDateConvert:  convert a date from one format ("YMD", "MDY" or "DMY") to another.
      _StringIsDate:  checks if a date with a given format is valid
      String management
      _StringCount: count of occurrences that appear in a string
      _StringFormatBytesSize: formatting a dimension expressed in bytes (bytes) in MB, TB, ...)
      _StringIsEndingWith: check if a string end with some characters
      _StringIsStartingWith: check if a string start with some characters
      _StringJoinArray:  concatenate elements of an array to rebuild a string
      _StringPadLeft: filling a string with characters on the left
      _StringPadRight: fill a string with characters on the right
      _StringRemoveFrenchAccent: remove french accent
      _StringRemoveChars: deleting characters from a string
      _StringStrip: eliminate characters at the begin and/or at the  end of a string
      _StringTitleCaseFrench: capitalize the first letter of each word with elimination of french accents
      _StringWSClean: simple replacement of "White Spaces",  remove beginning and trailing spaces and multiple spaces removal
      Any comments, suggestions for improvement or constructive criticism are welcome.
      Below you will find the UDF and a demo program. 
       
       
      JPD_String.zip
×
×
  • Create New...