jmpews / Dobby

a lightweight, multi-platform, multi-architecture hook framework.
Apache License 2.0
3.93k stars 809 forks source link

ios12 ios10崩溃 #100

Closed mike2603 closed 3 years ago

mike2603 commented 3 years ago

你好,我请教下,http://dobby.libkernel.com/#/get-started-ios 我根据这个文档 生成ios的project ,/usr/local/bin/cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=cmake/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64" -DCMAKE_SYSTEM_PROCESSOR=arm64 -DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=1 -DDEPLOYMENT_TARGET=9.3 -DDynamicBinaryInstrument=ON -DNearBranch=ON -DPlugin.SymbolResolver=ON -DPlugin.Darwin.HideLibrary=ON -DPlugin.Darwin.ObjectiveC=ON,然后xcode build 生成framework,再新建mokeyApp logos Tweak,把framwrork拖到我的tweak,加入以下代码,

import "Dobby.framework/Headers/dobby.h"

extern "C" { extern int DobbyHook(void function_address, void replace_call, void **origin_call); }

size_t (origin_fread)(void ptr, size_t size, size_t nitems, FILE * stream);

size_t fake_fread(void ptr, size_t size, size_t nitems, FILE stream) { // Do What you Want. NSLog(@"xxxxxx fake_fread"); return origin_fread(ptr, size, nitems, stream); }

attribute((constructor)) int main() {

NSLog(@"xxxxxxx dobbyAntiDebug");
DobbyHook((void *)fread, (void *)fake_fread, (void **)&origin_fread);

}

打开app注入崩溃,以下是崩溃信息 Termination Description: DYLD, can't resolve symbol _DobbyHook in /Library/MobileSubstrate/DynamicLibraries/dobbyAntiDebug.dylib because dependent dylib #4 could not be loaded 请问怎么解决?

jmpews commented 3 years ago

使用 -DDOBBY_GENERATE_SHARED=OFF 生成静态 framework 即可

cmake .. -G Xcode \
-DCMAKE_TOOLCHAIN_FILE=cmake/ios.toolchain.cmake \
-DPLATFORM=OS64 -DARCHS="arm64" -DCMAKE_SYSTEM_PROCESSOR=arm64 \
-DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=1 -DDEPLOYMENT_TARGET=9.3 \
-DDOBBY_GENERATE_SHARED=OFF -DDOBBY_DEBUG=OFF