From fbcde6d8920e1e24400bed99e875f515673d130a Mon Sep 17 00:00:00 2001 From: xerox Date: Thu, 6 Aug 2020 11:43:56 -0700 Subject: [PATCH] added callback system, needs some debugging, dont use it yet --- anticheat/libtersafe.idb | Bin 42958862 -> 42958862 bytes ligma-cheat/README.md | 74 ------------------ ligma-cheat/ligma-cheat/bypass/bypass.cpp | 34 ++++---- ligma-cheat/ligma-cheat/ligma-cheat.vcxproj | 9 +++ .../ligma-cheat/ligma-cheat.vcxproj.filters | 6 ++ ligma-cheat/ligma-cheat/main.cpp | 4 - ligma-cheat/ligma-cheat/utils/utils.cpp | 32 ++++++++ ligma-cheat/ligma-cheat/utils/utils.h | 15 +--- 8 files changed, 70 insertions(+), 104 deletions(-) delete mode 100644 ligma-cheat/README.md create mode 100644 ligma-cheat/ligma-cheat/utils/utils.cpp diff --git a/anticheat/libtersafe.idb b/anticheat/libtersafe.idb index 111ee0b8c19de03c326c5b91ae18c0e7c2d10d6c..0c9c31fb5d2c451cd8fc07cf2fbe94123b0569d1 100644 GIT binary patch delta 71481 zcma&P3A~Nv_x``0=h^$5V>qTWIi?bdX!VPKb+9q~Z>pkYB^dHUGww<3T1`Xa^B!`s(x zk{TdtcADhC+7UdUC|62d@f^z&CheEPJU#hZVPtO$Lwi9O*uz4zI|}_7#)?<6!NNQ{ zN0@6T33Kc)VbYoi6IM$Y+4cf|hVO)deUi{WmfnATaY-t&Q3d{m4-y8}TWHqB!*-N- z!kP;st0N4pk}$B}Yx$V3Yx$TD!~JyASihYKTXDhyLr zqJIL*5t{u{)1P#0O;_F(nk__`gE9@}W|Uzl15i$v64X3t3p zY&QBGC}YJ#8-ji=dRO$;C@lsc)kUfV|E-!o-8!M!d)4?Ez~_pGcCRq73FyPoFAz`I z8N$ep6NYw(FtEl#vs#SVo?l)+QP3w5iX8JzPAaFoxOzd&O0@#}Ip2aHw2@l_+rEA4 zio440z5K*Z1fAP#D-Uq1n^u z_o3g4J`(*>^j_#Ep&x=DD&eaMTtMIq z0v*s>qU?oI6J=Xnf70*k`jdVt9@uLr^HCmjo*uEbWRKL52+atVz?1MTb^M`U*72u# z8~!5vQTSc(aqug|1M7!!DoR`U0pfwxL#d4Nd#OL?e@iRr#s7gYVN09ppUCD3L%UBH z*sVgdkqo^Q{cP9MU83SWI{sYSAN7?mviF3cEfNOygwSkyZGZj=@N3`~!q0$rfVUJ6 z({sm^G?KSGE&B{@CMG&bXm+h^HL!~@*PbXRpd5y>H{%N#9}xW!1N{uUeFOfScqr5L zZ+;5;DD=zVXTwi&p0dOBL1_C311lzwWY8AbZ)j`XkL_Kocp+9i2P?h@}%eTE;r(ZJsY=ZlB-5I%7S`dEz# zYzQO!pmc#B#mMH2tb?A1{wpv4b-euF!yFc(JdScN$^=)^Uo0xhO@Ydpy?Z?o146Q=+53J*B%;ZDNWGTv1@EPKPO+*=iG7#QFTz{0p zzz##-M|x<5rFkhyA%iwyA!}qIfxU&PJTE1(M}(o>B@AplW3D9H58fT#PCQ`;2{i!_ zY62h(Y#Yw-4nb};&0 z=r!Qma1)}kZW9JfG))stA9)TVJHe0WPPiFTZ62IM;AiHEU->-I z-ea1$m}z2WrfD|WjmlE!m%w}0l3+c{=U!iQPk#A%mlxcap9<~IRaKek9N`n4ZOOeW z+y2|l3c6eH$0P9^Xw-p(a!&V$$By=29PI=AYl)mIw5M>fnYh?wqSq1~h;kOn@hFF& zG=?8kiw^?An{cSlajv&;t`~5wN73(sk57+xbF7b41?f**XakP)A$+O0-r9wFYZvOR zo#;qKL-YAjU_BXm0%Hzi%sz}MMo)-G=JO-H8{$sy;z%#!PID3-NbldSup|{&W;ztu ze~9nN*lO^}_ZLTn|dxT~;GUh6x{fTxX+Lq`6L>myT zO7ssbW&HagGmgl%*&>R|>5RU&+jsGzTTxi}5Fkhjt{7+SeDpW~Bsj#UuL-3;Hh> z`gg~(h9=B9>rzu#&O2OuY#XX^mLRCCv=nas+cr@b)5tmI#NFesn!R$S&AT;^l=tMGETFWy3Pw+d_w`e5`v@UG&4 z9gWf)r4Bp~{u_qlW);~7!qAqu`K0VA+-D~4Gl@ahdcZD0KO5yl_~Gz<#6v4#OfLGb zavdcG@SgYNL!m9kpPs~%%Fu5?iKkr`p`3}5>d2r&kQ%{jiYqOI?R+l`>{FpKTQa4D z%@;=YkTA46gn?ZzG`pNJ=c05)X@k-NUKd`8=a8D}`d(fX+G-r>O)P7Hbo~tr1Dnd2u|$UwjaP=

x0U4`cQekF2^dv~7j_ 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 X6-*IaCzvX@UT{NvaVj<~o}d07P-bb5 delta 70555 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 diff --git a/ligma-cheat/README.md b/ligma-cheat/README.md deleted file mode 100644 index 66121979e..000000000 --- a/ligma-cheat/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# build scripts - -First things first, to get this compiling/working for you, you are going to need to fix these build scripts: - -``` -adb logcat -c -adb push C:\Users\%USERNAME%\source\repos\ligma\ARM\Release\libligma.so /data/app/com.activision.callofduty.shooter-1/lib/arm/libligma.so -start cmd /k "title 'ligma filter' & adb logcat | findstr ligma" -start cmd /k "title 'codm logs' & adb logcat | findstr com.activision.callofduty.shooter" -start cmd /k "title 'all logs' & adb logcat" -adb shell am start -n com.activision.callofduty.shooter/com.tencent.tmgp.cod.PermissionGrantActivity -``` - -just change `C:\Users\%USERNAME%\source\repos\ligma\ARM\Release\libligma.so` to the path of your repo. Also change `adb` to whatever `adb` your emulator is using. - -# setup - -Since we arent done making this cheat, we have no need to repackage the entire apk and reinstall everytime we wanna test our code. Since the application -is not inside of this repo, you will need to first download the apk from here: [cod mobile](https://apkpure.com/call-of-duty-legends-of-war/com.activision.callofduty.shooter). - -### decompile - -First unzip the xapk and take the .apk that is inside of it out. use apktool.jar to decompile the apk. we are going to patch a smali file to load our .so before any other .so. - -``` -apktool.jar d codm.apk -``` - -now go to this smali file: `smali\com\tencent\tpshell\TPShellApplication.smali`. Add this smali code to load our .so: - -[`[WARNING]`]: (do not put libligma.so or ligma.so just ligma!) - -``` -const-string v0, "ligma" -invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V -``` - - - -### recompile - -simply run this to recompile the apk, this apk is not signed and will need to be signed. - -``` -apktool.jar b codm -o codm_patched.apk -``` - -### signing - -use apksigner.jar to sign the newly compiled apk. - -``` -apksigner.jar -a codm_patched.apk -``` - -now you have a patched & signed apk. Its time to install the apk. - -### install - -now that we have a signed and patched apk, install the apk (not the xapk) just the patched apk into your emulator. After you have installed it you will -need to copy the .obb files which are located INSIDE of the xapk. open the xapk back up in zip, open `Android` folder and you will see an `obb` folder. Copy this folder -to `Android/obb (or copy the content from inside of the obb file to here)` on your emulator. - - - - -Finally you will now need to copy the original `apk` to `/data/app/` please refer to [this](https://githacks.org/android-reverse-engineering/cod-mobile/-/blob/master/ligma%20(cheat)/ligma/bypass/bypass.cpp#L35) line of code to understand why. -Ensure that the `apk` is named `base_orig.apk`. If everything is done correctly you will now be able to build your .so and the game will auto run. - -# Result - -now if you click build inside of visual studios your screen should look like this (make sure you build in release otherwise the build script wont know where to copy your .so from!). Also be aware that you may need to build 2/3 times since `adb` will connect the first time... - - \ No newline at end of file diff --git a/ligma-cheat/ligma-cheat/bypass/bypass.cpp b/ligma-cheat/ligma-cheat/bypass/bypass.cpp index 10e6fde51..c642de08b 100644 --- a/ligma-cheat/ligma-cheat/bypass/bypass.cpp +++ b/ligma-cheat/ligma-cheat/bypass/bypass.cpp @@ -10,15 +10,20 @@ namespace ligma __attribute__((noinline)) void init(const std::function& callback) { - il2cpp_callback = callback; + ligma::utils::on_image_load("libil2cpp.so", callback); + ligma::utils::on_image_load("libxlua.so", [&](const std::uintptr_t module_base) + { + // install lua hooks when libxlua.so gets loaded... + loadbufferx = dlsym(reinterpret_cast(module_base), "luaL_loadbufferx"); + ligma::hook::make_hook(loadbufferx, reinterpret_cast(&loadbufferx_hook)); + }); + + // these hooks can be registered at anytime. fopen_ptr = dlsym(dlopen("libc.so", RTLD_NOLOAD), "fopen"); dlopen_ptr = dlsym(dlopen("libdl.so", RTLD_NOLOAD), "dlopen"); system_prop_get = dlsym(dlopen("libc.so", RTLD_NOLOAD), "__system_property_get"); - loadbufferx = dlsym(dlopen("libxlua.so", RTLD_NOW), "luaL_loadbufferx"); - LOGI("loader_dlopen_ptr = %p", dlopen_ptr); ligma::hook::make_hook(dlopen_ptr, reinterpret_cast(&dlopen_hook)); - ligma::hook::make_hook(loadbufferx, reinterpret_cast(&loadbufferx_hook)); ligma::hook::make_hook(fopen_ptr, reinterpret_cast(&fopen_hook)); ligma::hook::make_hook(system_prop_get, reinterpret_cast(&system_property_hook)); } @@ -37,7 +42,7 @@ namespace ligma __attribute__((noinline)) FILE* fopen_hook(const char* path, const char* mode) { - if (strstr(path, "base.apk")) + if (strstr(path, ".apk")) // support older versions of android. { path = "/data/app/base_orig.apk"; LOGI("spoofed base.apk to original apk!"); @@ -57,20 +62,21 @@ namespace ligma __attribute__((noinline)) void* dlopen_hook(const char* filename, int flags) { - LOGI("dlopen called, filename = %s", filename); dlopen_mutex.lock(); ligma::hook::disable(dlopen_ptr); - const auto result = dlopen(filename, reinterpret_cast(RTLD_NEXT)); - if (strstr(filename, "libil2cpp.so") != NULL) - { + if(ligma::utils::get_callbacks()->size()) // only enable hook if we still have callbacks... ligma::hook::enable(dlopen_ptr); - dlopen_mutex.unlock(); - } - else + dlopen_mutex.unlock(); + + // + // if there is a callback for this module, call it and remove it from the map. + // + const auto callback = ligma::utils::get_callbacks()->find(filename); + if (callback != ligma::utils::get_callbacks()->end()) { - dlopen_mutex.unlock(); - il2cpp_callback(reinterpret_cast(result)); + callback->second(reinterpret_cast(result)); + ligma::utils::get_callbacks()->erase(filename); } return result; } diff --git a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj index 006b20522..a8c0d4c86 100644 --- a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj +++ b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj @@ -37,6 +37,7 @@ + @@ -152,6 +153,7 @@ NotUsing pch.h c++1z + Enabled %(AdditionalDependencies) @@ -175,6 +177,7 @@ adb shell am start -n com.activision.callofduty.shooter/com.tencent.tmgp.cod.Per NotUsing pch.h c++1z + Enabled %(AdditionalDependencies) @@ -198,6 +201,7 @@ adb shell am start -n com.activision.callofduty.shooter/com.tencent.tmgp.cod.Per NotUsing pch.h c++1z + Enabled %(AdditionalDependencies) @@ -221,6 +225,7 @@ adb shell am start -n com.activision.callofduty.shooter/com.tencent.tmgp.cod.Per NotUsing pch.h c++1z + Enabled %(AdditionalDependencies) @@ -244,6 +249,7 @@ adb shell am start -n com.activision.callofduty.shooter/com.tencent.tmgp.cod.Per NotUsing pch.h c++1z + Enabled %(AdditionalDependencies) @@ -267,6 +273,7 @@ adb shell am start -n com.activision.callofduty.shooter/com.tencent.tmgp.cod.Per NotUsing pch.h c++1z + Enabled %(AdditionalDependencies) @@ -290,6 +297,7 @@ adb shell am start -n com.activision.callofduty.shooter/com.tencent.tmgp.cod.Per NotUsing pch.h c++1z + Enabled %(AdditionalDependencies) @@ -313,6 +321,7 @@ adb shell am start -n com.activision.callofduty.shooter/com.tencent.tmgp.cod.Per NotUsing pch.h c++1z + Enabled %(AdditionalDependencies) diff --git a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.filters b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.filters index c3c69edb9..968d7683c 100644 --- a/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.filters +++ b/ligma-cheat/ligma-cheat/ligma-cheat.vcxproj.filters @@ -19,6 +19,9 @@ {742fd78d-91c1-449a-a790-95a32404ea5d} + + {83d12913-a2bb-4372-a9a4-387cd3b158ad} + @@ -27,6 +30,9 @@ source\bypass + + source\utils + diff --git a/ligma-cheat/ligma-cheat/main.cpp b/ligma-cheat/ligma-cheat/main.cpp index 5bbed57e5..e64b80761 100644 --- a/ligma-cheat/ligma-cheat/main.cpp +++ b/ligma-cheat/ligma-cheat/main.cpp @@ -3,10 +3,6 @@ __attribute__((constructor)) void init() { - // - // this lambda is called when il2cpp.so is loaded... - // WARNING: !!!! DO NOT CALL DLOPEN OR ANY FUNCTION THAT MAY CALL IT INSIDE OF THIS LAMBDA !!!! - // ligma::bypass::init([](const std::uintptr_t il2cpp_base) { LOGI("il2cpp base address = %p", il2cpp_base); diff --git a/ligma-cheat/ligma-cheat/utils/utils.cpp b/ligma-cheat/ligma-cheat/utils/utils.cpp new file mode 100644 index 000000000..52abb1408 --- /dev/null +++ b/ligma-cheat/ligma-cheat/utils/utils.cpp @@ -0,0 +1,32 @@ +#include "utils.h" +#include + +namespace ligma +{ + namespace utils + { + void on_image_load(const std::string& module_name, const std::function& callback) + { + get_callbacks()->insert({ module_name, callback }); + } + + auto get_callbacks() -> std::map>* + { + static std::map> callback_map{}; + return &callback_map; + } + + void iterate_memory(const std::function&, const std::string& protection)>& callback) + { + std::fstream maps("/proc/self/maps"); + std::pair memory_range; + std::string page_perms; + while (maps >> memory_range.first >> memory_range.second >> page_perms) + { + maps.ignore(std::numeric_limits::max(), '\n'); // skip to next line :) + callback(memory_range, page_perms); + } + maps.close(); + } + } +} \ No newline at end of file diff --git a/ligma-cheat/ligma-cheat/utils/utils.h b/ligma-cheat/ligma-cheat/utils/utils.h index 21b4add6e..10f2a73eb 100644 --- a/ligma-cheat/ligma-cheat/utils/utils.h +++ b/ligma-cheat/ligma-cheat/utils/utils.h @@ -7,17 +7,8 @@ namespace ligma { namespace utils { - inline void iterate_memory(const std::function&, const std::string& protection)>& callback) - { - std::fstream maps("/proc/self/maps"); - std::pair memory_range; - std::string page_perms; - while (maps >> memory_range.first >> memory_range.second >> page_perms) - { - maps.ignore(std::numeric_limits::max(), '\n'); // skip to next line :) - callback(memory_range, page_perms); - } - maps.close(); - } + auto get_callbacks() -> std::map>*; + void iterate_memory(const std::function&, const std::string& protection)>& callback); + void on_image_load(const std::string& module_name, const std::function& callback); } } \ No newline at end of file