Table Reader
From PokerAI
Table reader is element of a pokerbot that reads vital information (player names, stack sizes, hole cards, board, etc - in general the game representation) that the bot needs as input in order to make a play decision. Table readers can be implemnted in two different ways: by readnig the screan (called Table scraper) or by hooking to the casino executable (dll injection), or otherwise reading the process memory (Table memory scanner).
While both techniques are analysed and described in a separate articles, a general comparison between both approaches is given bellow.
Pros and Cons
Pros for DLL injection:
- Fairly easy to do.
- Easy on the CPU and memory.
- Exact, and works with any poker client theme/setup/table size.
- Works through almost all client updates. (If they break it they've made a very big fundamental change)
- You can hook APIs used for detecting bots. (e.g. When they try to read a list of running processes, fake it leaving yours out)
Cons for DLL injection:
- Kinda hard to stealth completely
- You may have to have "show all dealer chat" turned on all the time. (I'm pretty sure some poker calculators require this too)
- May be hard for some sites that mangle their memory or otherwise try to protect against this. (Although it's never impossible)
- You'll have to write code for each site, some will be harder than others.
Pros for screen scraping:
- The bot can run on another machine. (But you still need something on the poker machine...)
- Can work with any site.
- Can be be made quick to setup new sites, if you have the framework in place.
Cons for screen scraping:
- Seems like it would be harder to do from scratch.
- Only works with one font/theme/style/etc...
- Only works with one table type. (heads up, 6 player, 9 player, 10 player all take their own setup)
- Updates can easily break the code/profile.
- To stealth, you need two computers.
- Lag or fast updates can make you miss information. (With no way to recover it)
- If sites try to protect against this in the future you're screwed. (e.g. Randomly moves things unnoticeable one pixel)
- CPU/memory heavy

