Page 1 of 1

Chess engine recognizer

PostPosted: 04 Nov 2009, 05:12
by Dann Corbit
In this 7-zip archive:
http://cap.connx.com/chess-engines/new- ... h/check.7z

You will find a primitive, first-swipe try at a chess engine recognizer that runs on Windows operating systems.

What it does is memory map a chess binary file, then search for uci or xboard keywords. If key words are found, then it emits the keywords. When the program exits, the count of keywords found is given.

The UCI chess engine finder will only emit output if the string "uci" is found somewhere in the executable. The Winboard chess engine finder will only emit output if the string "xboard" is found somewhere in the executable.

c:\chess\winboard\crafty>wbcheck64 craftydd.exe
file mapping read data is
found accepted
found analyze
found bk
found black
found colors
found computer
found cores
found debug
found draw
found easy
found edit
found egt
found feature
found force
found go
found hard
found hint
found ics
found level
found memory
found move
found myname
found name
found new
found nopost
found nps
found offer
found option
found otim
found ping
found playother
found post
found protover
found quit
found random
found rating
found rejected
found remove
found resign
found result
found reuse
found san
found sd
found setboard
found sigint
found sigterm
found smp
found st
found tellics
found tellicsnoalias
found time
found undo
found variant
found variants
found white
found xboard

program exits with the number 56 returned to the operating system.

ucicheck was fooled by crafty:

c:\chess\winboard\crafty>ucicheck64 craftydd.exe
file mapping read data is
found btime
found check
found code
found cp
found debug
found default
found depth
found go
found hash
found id
found info
found is
found later
found mate
found max
found min
found name
found nodes
found nps
found option
found ponder
found position
found pv
found quit
found register
found score
found spin
found string
found time
found type
found uci
found var
found wtime

program exits with the number 33

c:\chess\winboard\Rybka>wbcheck64 "Rybka 3.exe"
file mapping read data is

program exits with 0

c:\chess\winboard\Rybka>ucicheck64 "Rybka 3.exe"
file mapping read data is
found author
found bestmove
found binc
found btime
found button
found check
found code
found combo
found cp
found currmove
found currmovenumber
found debug
found default
found depth
found go
found hash
found id
found infinite
found info
found is
found isready
found lowerbound
found mate
found max
found min
found movestogo
found movetime
found multipv
found nalimovcache
found nalimovpath
found name
found nodes
found nps
found option
found ponder
found ponderhit
found position
found pv
found quit
found readyok
found register
found score
found searchmoves
found setoption
found spin
found stop
found string
found tbhits
found time
found type
found uci
found uci_elo
found uci_limitstrength
found ucinewgame
found uciok
found upperbound
found var
found winc
found wtime

program exits with 59

Suggestion for automated engine analyzers:
Run these programs first, and if the score is above a certain level, then run additional diagnostics like starting the engine and analyzing the conversation (several programs do this now, but they check every binary in the universe, including things like uninst00.exe, ecoExtract.exe and other things that are definitely not chess engines).

I imagine that it is not foolproof, and obviously can be made much better (e.g. checking to see that '.exe' is the file extension is one obvious example).