Yes, there are things you can do, and they will make it very difficult for a reverse engineer, but I doubt that you can do anything that stops Chris Eagle .
The best way to protect against modification is to take SHA-2 from .so after compiling it and rephrase it every time at run time, matching it with a known value. This check will be performed on the client side, so a qualified RE can simply modify the binary to ignore the check. However, this is a bit more complicated. If you put checks on the entire code and use different verification methods, then it expands the amount of work that RE must do. However, you know that Microsoft poured millions of dollars into anti-RE methods, and there are still pirated copies of Office and Windows. You will never stop them. My personal philosophy (now that I myself have studied RE) is that there is too much pain in the end to try and stop them. Just make a good app, make it cheap, and people will buy it. The unfortunate people who steal your things would not buy anyway.
If your application calls home, you can also send a hash to the server for verification. Of course, RE can still get around this, but that's one more thing.
source share