/etc/profile will be read if the user's shell according to /etc/passwd (or LDAP, or other tool) knows how to read it and does it.
If you replace /bin/sh with a binary that doesn't know how to read /etc/profile, then it won't be read.
One way to fix it is obviously to fix the binary so that it knows how to handle /etc/profile.
Another is to keep the user's shell set to
/bin/sh, and to edit the user's
$HOME/.profile to start the binary after everything else has been set up.
A third way is to make the user log in using an SSH key, and edit the key so that it will start
/bin/binary and disregard any other commands. You do this by editing the user's
$HOME/.ssh/authorized_keys to read e.g.
command="/bin/binary" ssh-dss AA.....restofkeyhere....