• 0

[VB.NET] Memory Address


Question

9 answers to this question

Recommended Posts

  • 0

There was something known as the VarPtr function in VB (actually, in the BASIC language itself), but after some quick Googling, it isn't found in VB.NET, most likely due to the fact that it is "unmanaged". You might try digging something up along the lines of a VB.NET VarPtr replacement, however. For example, I found something with System.Runtime.InteropServices.GCHandle as well as something called BitConverter. I'm out of my element when it comes to .NET, but I figured that might help to get you started at least. Those last two seem wrong for memory, but I didn't look them up so they might be able to manipulate memory, despite their names.

  • 0

I wouldn't suggest messing with a .NET process' memory (due to CRL and other unpredictable aspects) so you should probably stick with other dummy processes and I'm not sure if .NET offers memory reading APIs either, so you'd probably be best using WinAPI in this:

Just look into OpenProcess, ReadProcessMemory, WriteProcessMemory, etc.

  • 0
I wouldn't suggest messing with a .NET process' memory (due to CRL and other unpredictable aspects) so you should probably stick with other dummy processes and I'm not sure if .NET offers memory reading APIs either, so you'd probably be best using WinAPI in this:

Just look into OpenProcess, ReadProcessMemory, WriteProcessMemory, etc.

ReadProcessMemory, how would I do that?

Maybe something like this?

Imports System
Imports System.Diagnostics
Imports System.ComponentModel

Sub ReadMem()
Dim myProcesses As Process = Process.GetProcessesByName(pinball)
Dim memRead as String = myProcesses.ReadProcessMemory

Anything close to what your thinking?

  • 0

VB.NET doesn't natively supported memory pointers and allocations, but this can be accomplished through .NET Framework classes like IntPtr, Marshal and GCHandle. There are probably other types as well, but I've never used them.

IntPtr is used as a pointer to a platform-specific integer. Marshal can read and write data at a specific memory location (leveraging IntPtr's).

Example:

Dim pointer as IntPtr
Dim number as Integer = 20
pointer = Marshal.AllocHGlobal(4)
Marshal.WriteInt32(pointer, number)

Example:

Dim anotherInteger as Integer = Marshal.ReadInt32(pointer)

Example:

Dim message as String = "I know, I'm awesome..."
Dim pointer as IntPtr = Marshal.StringToHGlobalAuto(message)

Example:

Dim anotherMessage as String = Marshal.PtrToStringAuto(pointer)

You can see that the Marshal class acts as a broker between the program code and the memory operation.

You can also use the Marshal class on VB.NET Structures:

Example:

Public Structure MyStruct
	Dim x as Integer
	Dim y as Integer
End Structure

Dim structure1 as MyStruct
structure1.x = 1
structure1.y = 2

Dim pointer = Marshal.AllocHGlobal(Marshal.SizeOf(structure1))
Marshal.StructureToPtr(structure1, pointer, True)

Dim structure2 as MyStruct = Marshal.PtrToStructure(pointer, New MyStruct().GetType)

Objects are handled differently, because of their Garbage Handling requirements (they are Managed Types). You can use a GCHandle to read and write objects.

Example:

Public Class MyClass
	Public Name As String
	Public Age as Integer
End Class

Dim handle as GCHandle
Dim person as MyClass
person.Name = "Matthew Abbott"
person.Age = 24

handle = GCHandle.Alloc(person)

Example:

Dim person2 as MyClass = handle.Target
handle.Free()

You should check out the System.Runtime.InteropServices namespace on MSDN and see what you can come up with.

Hope that helps.

Adapted from: DotNetBips.com

  • 0

The WINAPI functionality is accessed in a similar way to the C# alternative. This is known as P/Invoke (Platform Invoke), which allows managed code to invoke unmanaged code residing in libraries on the Host computer.

In VB.NET, to declare a WINAPI function, you do the following (e.g. CopyMemory):

Public Static Class WINAPI
	Declare Static Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal pDst As IntPtr, ByVal pSrc As String, ByVal length As Long)
End Class

In the above example, I have declared a static class, so we can access our WINAPI functions from a single location, without instantiation, ie., you would call WINAPI.CopyMemory(...).

You should look into P/Invoke for more information on using external unmanaged code from .NET.

Also, check out http://www.pinvoke.net for more information.

  • 0

Does this code works for two different applications? I mean if I alloc one object in the first application, pass the memory address to the other, is the other able to start another object (same instance) pointing to the same object. Can we use the same object in different applications? If not what would be the best way to do so? Thank you very much in advance, it's been a long time I'm trying to make it work, thanks again.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Build your own business with a Sellful lifetime plan now at 76% off by Steven Parker Today's deal from our Apps + Software section of the Neowin Deals store, lets you save 76% off Sellful: ERP Agency Plan lifetime deal. AI-Powered Software and Website Builder for Agencies Ever feel like a client’s needs simply can’t be met on a single platform? With Sellful, it’s all here, and all white labeled. Build anything from simple websites to complex workflows to automate your business in a few clicks. Manage everything from email & social media marketing, to payroll & invoicing. It’s got a white label website builder, online shop, CRM, ERP, marketing, memberships, invoicing, appointments, online courses, project manager, and point of sale functions. Sellful is the only white label platform in the world that is truly all in one, combining all aspects of your business in one place no matter the industry. What can you do with Sellful? Automatically generate amazing websites, funnels, & landing pages in seconds using AI Sell physical & digital products online Keep track of customers with native CRM Automate communication & outreach using AI Manage all aspects of your business in one place Collect emails & phone numbers via forms on your website, then send newsletters to customers with important updates, sales, and discounts Build membership programs with various levels of access for your customers Receive payments from your clients using any number of payment gateways including Paypal, Stripe, Authorize.net, Square & more Have your clients book appointments for services & meetings quickly Build powerful & robust online courses to sell to or instruct people Build communities on Sellful social networking sites with activity feeds, private messaging, & groups See & adjust a visual version of everything going on within your client projects Sync your online shop’s inventory with multiple offline store locations & registers Manage inventory, coupons, & sales through Sellful’s native POS app on your computer Manage employee recruitment, time clocks, payroll & leave requests Automate help desk tasks such as support ticket creation Communicate with your team on multiple chat channels Keep an accounting of your income & expenses Automate billing & website creation for your marketing agency What's in the ERP Agency Plan: White Label Unlimited 10 Sites/Sub Accounts Included 100% White Label For Your Brand Or Your Client's Brand Website Builder Sales Funnel Builder Online Shop Automation Builder CRM & Pipeline Management Email Marketing SMS Marketing Reputation Management 2 Way Communication (Email, SMS & Phone) Appointment Scheduler Memberships Subscriptions Forms, Surveys & Polls Client Portal AI Assistant & Chatbot Social Media Automation Legally Binding Contract Signing Project Management System Online Courses (LMS) Invoicing External CRM Connect Class Attendance & Event Booking Restaurant Builder Support Ticket System Team Chat AliExpress Drop Shipping Accounting Advanced Affiliate Program Community Builder Point Of Sale HR Suite (HR, Time Clock, Payroll & ATS) 5000+ App Integrations 20+ Payment Gateways (No Fees From Us) Custom Mobile App Agency Billing System Setup Wizard Builder Content Cloner Tool Digital Marketing Courses Actionable Marketing PDF Guides Unlimited Contacts Per Site/Sub Account Unlimited Pages Per Site/Sub Account Unlimited Blog Posts Per Site/Sub Account Unlimited Users Per Site/Sub Account Unlimited Products Per Site/Sub Account Unlimited Visitors Per Site/Sub Account 100 Gigs Of File Storage 50,000 Free Email Sends* Unlimited Domain Names Per Site/Sub Account *Email sending can be purchased in packs of 10,000 for $10/Month. You can also add your own external sending service to send without limits. Email sends are shared in a pool throughout all websites and email addresses on the account. System emails are always free. Good to know Length of access: lifetime Redemption deadline: redeem your code within 30 days of purchase Updates included Sellful: ERP Agency Plan (Lifetime) normally costs $1,497 but it can be yours for only $349.97, that's a saving of $1,147.03 (76%) off! For terms, and more details click the link below. Get a lifetime plan to Sellful at 76% off (was $1,497) Although priced in U.S. dollars, this deal is available for digital purchase worldwide. Support queries If you have queries or need support for any of the Neowin Deals, please use the contact form here. Neowin Deals are managed and sold by StackCommerce who represent Neowin on an affiliate basis. Why we post these deals We post these because we earn commission on each sale so as not to rely solely on advertising, which many of our readers block. It all helps toward paying staff reporters, servers and hosting costs. So for those that keep moaning and complaining, be thankful we're still online for you to even do that. Other ways to support Neowin Whitelist Neowin by not blocking our ads Create a free member account to see fewer ads Make a donation to support our day to day running costs Subscribe to Neowin - for $14 a year, or $28 a year for an ad-free experience Disclosure: Neowin benefits from revenue of each sale made through our branded deals site powered by StackCommerce.
    • No its not, there are ton of Youtube videos to get you started, what do you think people did before AI existed?
    • Read this in Humor Simpson 's voice, "Out of my way Moe".
    • You still can, its just under the Transform flyout for WordArt now
  • Recent Achievements

    • One Year In
      DarkWun earned a badge
      One Year In
    • Dedicated
      Almohandis earned a badge
      Dedicated
    • Dedicated
      JuvenileDelinquent earned a badge
      Dedicated
    • First Post
      DrWankel earned a badge
      First Post
    • Reacting Well
      DrWankel earned a badge
      Reacting Well
  • Popular Contributors

    1. 1
      +primortal
      505
    2. 2
      +Edouard
      181
    3. 3
      PsYcHoKiLLa
      86
    4. 4
      Michael Scrip
      78
    5. 5
      Steven P.
      76
  • Tell a friend

    Love Neowin? Tell a friend!