我以前是用PHP做开发的,喜欢捣鼓IPHONE的越狱,偶然一次在一个朋友家发现在逆向的书,只是拿起随手翻翻(我一直觉得“逆向”这个词很高大上,是我无法触摸的东东)。看了半个小时,看起来没什么难的啊,于是就把书据为已有,开始尝试按书中的实战案例分析APP,从此进入了一个新的领域,就像书中所说,从高维观察低维的感觉,真是爽暴了。
这段时间用的最多的工具是cycript,感觉这个工具太神奇,就把它的源码下来看看,嘿嘿,当然看不懂,不过,这不影响我对源码的好奇心,我尝试从cycript的源码生成一个可执行文件,原以为会像theos一样简单,make一下就好了,但是,搞了一个通宵,翻墙狗哥,依然无果,现在只有在此求助大神相助了。
先说说我的做法
git clone git://git.saurik.com/cycript.git cycript
后,还要cd 到 cycript下载目录
git clone git://github.com/SaurikIT/libffi.git libffi
git clone git://git.savannah.gnu.org/readline.git readline
这下源码文件就齐了。
观察目录内的文件,有可能的编译文件是
1、make.sh
2、configure
测试一下:
1、./make.sh
xcode.mk:23: codesign.mk: No such file or directory
make: *** No rule to make target `codesign.mk’. Stop.
失败!
不知道为什么,codesign.mk文件出现在.gitignore文件里,也就是说GIT的时候它被忽略了。
2、./configure
看到有一大堆参数,不管了,直接./configure,顺利走完。
make之
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I./include -DYYDEBUG=1 -include config.h -include ./unconfig.h -DCY_EXECUTE -DCY_ATTACH -I/usr/include/apr-1 -g3 -O0 -Wall -Werror -Wno-deprecated-declarations -
Wno-dangling-else -Wno-overloaded-virtual -Wno-parentheses -Wno-unneeded-internal-declaration -MT Output.lo -MD -MP -MF .deps/Output.Tpo -c Output.cpp -fno-common -DPIC -o .libs/Output.o
Output.cpp:504:9: error: ‘this’ pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Werror,-Wtautological-undefined-compare]
if (this == NULL) {
^~~~ ~~~~
Output.cpp:658:9: error: ‘this’ pointer cannot be null in well-defined C++ code; comparison may be assumed to always evaluate to false [-Werror,-Wtautological-undefined-compare]
if (this == NULL)
^~~~ ~~~~
2 errors generated.
make[2]: *** [Output.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
刚刚开始就报错了。
./configure --help 一下,看到有一大堆参数,这玩意我也不会设啊。
希望高人能指导我完成这次从源码到文件的编译过程。
谢谢谢谢。