前几天学习了so加固相关的知识so加固-加密特定section中的内容、ELF中可以被修改又不影响执行的区域,于是自己动手写了一个crackme,自我感觉么么哒。 但是不知道在大牛眼中是啥样,于是在群里投放了这个crackme,最终有大牛指出,没乱用,自己按照他的方法看了一下,真是没卵用啊。
源码地址:
https://github.com/difcareer/CrackMe
apk地址:https://github.com/difcareer/CrackMe/raw/master/app/src/main/misc/crackme.apk
先说一下我的加固思路:
看看效果:
在IDA6.6中,直接不能识别ELF文件,只提示了Binary。
在IDA6.8中,仍然能够识别ELF,但是有报错,IDA6.8比6.6确实增强了不少。
Paste_Image.png
以前看到这样的弹窗直接被吓尿。
再看看核心函数的代码,一团乱:
Paste_Image.png
因为是我写的代码,所以我想象的破解方法是:1. 先修复so,让IDA不报错,2. 找到解密函数,确认被加密函数的地址空间,dump内存,合并修复。
其实不用,直接使用空白IDA attach 进程,这里需要使用IDA6.8,IDA会根据内存构建视图,此时内存中是已经解密的内容,发现核心函数直接被还原了:
Paste_Image.png
稍微调试一下,就能找到flag:
Paste_Image.png
这种静态加密的方式,在动态调试面前,真是没有一点卵用。
那么,牛逼的加固应该是怎么样的呢?
我想到的是:
暂时想不到其他的了,欢迎大家多多发挥探讨。