说明: 本文没有任何搞破坏实质,网上逆向文章极少,希望借助
简书APP
来向初学者打开逆向开发的神秘面纱! 如果觉得还可以, 请留赞!
我想有一部分人想要知道或者说不知道达到上图最终效果我们需要会什么知识和需要有什么工具, 在这里我只说工具名和需要掌握的知识, 至于每个工具的用途和使用谷歌一定比我阐述的好! (我的上篇文章也会对你有所帮助)
准备工作:
- dumpdecrypted(砸壳工具,本文非必要,我的github上传了砸好的)
- class-dump(导出app头文件所需工具)
- Theos(开发工具,简单理解为类Xcode,单击谷歌一下)
- 苹果开发者证书(没有的话淘宝买一个.p12的,大约15块钱)
- 一台iPhone手机(越不越狱都可以)
- 有点iOS开发经验即可
只需要完成以上6项准备工作你就可以很6了, 一步一步达到目的!
开始干活:
-
class-dump
"拿过来"已经砸好的简书ipa
解包, 没有的去我的github下载, "掏出"class-dump导出app的所有头文件, 命令和效果如下:
class-dump -H Hugo.app -o Hugo-Header
这样我们就会看到当前目录下会多一个Hugo-Header
文件夹,里面是app所有的头文件.(小技巧, 把文件夹放到Xcode中查找方法更方便)
-
Theos
在终端运行命令创建Tweak工程
/opt/theos/bin/nic.pl
工程创建详细步骤
我们会看到目录中新增的文件夹就是此工程, 对于各个文件是干什么的, 相信你谷歌了Theos, tweak后就知道答案了! 我们只需要对Makefile和Tweak.xm编码
工程文件夹
-
Tweak编码
我们找到 HGNoteViewController.h 中的 - (void)likeNote;方法, 这个就是点赞(简书叫做喜欢)调用的方法了, .xm核心代码如下:
static HGNoteViewController *vc = nil;
static NSMutableSet *mSet = [NSMutableSet setWithCapacity:1];
- (void)buttonClicked:(UIButton *)btn
{
NSArray *arr = [mSet allObjects];
for (int i = 0; i < arr.count; i++) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)((i+1) * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
HGNote *no = arr[i];
vc.currentNote._id = no._id;
self.label.text = [NSString stringWithFormat:@"点赞中...\n为作者: %@\n文章名: %@...\n ***点赞成功!***", no.user.nickname, [no.title substringToIndex:7]];
[vc likeNote]; // 点赞!!!
});
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)((arr.count+1) * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.label.text = [NSString stringWithFormat:@"点赞完成!!!\n 共计: %ld 个 \n ***点赞完成!***", arr.count];
});
%hook HGAvatarTagNoteCell
- (void)setupWithModel:(id)arg1
{
%orig;
HGNote *note = arg1;
[mSet addObject:note];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%@", arg1]
message:@"VM"
delegate:nil
cancelButtonTitle:@"Thanks"
otherButtonTitles:nil];
//[alert show];
[alert release];
}
%end
Makefile配置:
Makefile配置-
至此, 我们已经完成了一大半, 接下来就是安装到手机了, 越狱的小伙伴可以通过SSH安装到手机上, 也就是Makefile文件中加入 THEOS_DEVICE_IP = 172.18.1.123(换成你手机的IP), 通过make package install 安装到手机
-
本文针对于未越狱安装, 未越狱的小伙伴请往下看!
执行命令:
make package
打包后会在当前工程debug文件夹下生成一个.dylib文件, 这个就是我们想要的最终产物了, 我们接下来要做的就是更换它依赖的环境(因为tweak会默认依赖越狱环境), 然后向app可执行文件注入此动态库, 签名, 打包, 真机运行!
- 更改环境
格式为
install_name_tool -change old.dylib @executable_path/new.dylib 应用程序
- 注入动态库 需要安装yololib
安装后运行命令格式为
yololib 可执行文件 要被注入的.dylib
- 证书签名
我们需要把生成的dylib和embedded.mobileprovision文件copy到Hugo.app中,然后用codesign开始签名
格式为
codesign -f -s 自己证书名称 要签名的文件
- 真机运行
安装到真机的方式有很多种, iTools, iTunes 等.
- 见证劳动成果
下图为gif动态图, 刷新页面重新查看效果
刷新页面查看gif动态图**Ps :如果get此技能后, 同理 ,相信微信朋友圈一键点赞也不在话下了吧!学习技术可以加我的微信love0415-1314 **
遇到问题的小伙伴可以在评论留下困惑, 供大家一起探讨解决!如果觉得哪个地方不够详细可以说明, 将补充上去
互相学习, 互相进步!
由于源代码未经整理, 暂未放至我的github, 如果需要demo的人多, 我可以整理一份传上去
网友评论
==> Preprocessing Tweak.xm…
==> Compiling Tweak.xm (armv7)…
Tweak.xm:1:8: error: unknown type name 'HGNoteViewController'; did you mean
'UIPageViewController'?
static HGNoteViewController *vc = nil;
^~~~~~~~~~~~~~~~~~~~
UIPageViewController
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIPageViewController.h:46:40: note:
该怎么解决这个问题呢。。
您好,我碰到下面的错 :
==> Error: The vendor/include and/or vendor/lib directories are missing. Please run `git submodule update --init --recursive` in your Theos directory. More information: https://github.com/theos/theos/wiki/Installation.
make: *** [before-all] Error 1
这是为什么啊?
Makefile:12: /makefiles/tweak.mk: No such file or directory
make: *** No rule to make target `/makefiles/tweak.mk'. Stop.
BBBBB:hookjianshu mac$ make package
> Making all for tweak hookjianshu…
==> Preprocessing Tweak.xm…
Tweak.xm:26: error: %hook does not make sense inside a block
make[3]: *** [/Users/mac/hookjianshu/.theos/obj/debug/armv7/Tweak.xm.0c333762.o] Error 22
make[2]: *** [/Users/mac/hookjianshu/.theos/obj/debug/armv7/hookjianshu.dylib] Error 2
make[1]: *** [internal-library-all_] Error 2
make: *** [hookjianshu.all.tweak.variables] Error 2
第26行 都是粘贴你的代码 %hook HGAvatarTagNoteCell 这个错误怎么解决
Makefile:4: /makefiles/common.mk: No such file or directory
Makefile:10: /tweak.mk: No such file or directory
make: *** No rule to make target `/tweak.mk'. Stop.
应该是路径问题,下面是我Makefile配置:
ARCHS = armv7 arm64
TARGET = iPhone:latest:7.0
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = hookjianshu
hookjianshu_FILES = Tweak.xm
hookjianshu_FRAMEWORKS = UIKit
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
我在终端含有Makefile文件目录下输入make package的
我用这个重下一次就好了 git clone --recursive https://github.com/theos/theos.git
/Applications/Xcode.app/Contents/Developer/usr/bin/make package requires dpkg-deb.
make: *** [internal-package-check] Error 1
所以自己决定砸壳,搞了好几个小时了。到目前砸壳还没砸开呢。遇到的问题是 执行命令 ssh root@yourIP 连接不上iphone(未越狱)。看博客他们都是越狱了,iphone 才有ssh.
想知道你怎么砸地。给点帮助。谢谢! QQ 498330501