Jump to content
Che

Stergerea permisiunilor inlatura si functionalitatea in Android?

Recommended Posts

        Am acest program de monitorizare/spinoaj pe Android. Genereaza acel programel cu setarile pe care le vrei dar as vrea sa ii anulez functiile de send SMS si SEND CALL fiindca nu vreau sa ma trezesc ca face apeluri SMS/CALLS pe numere de alea cu taxa inversa de care iti vine sa platesti o gramada de bani (gen mii de euro).

 

                  I-am editat permisiunile din AndroidManifest.xml si i-am sters pur si simplu permisiunile de SEND_SMS si CALL_PHONE dar functiile din C# i-au ramas. Asa ca m-am gandit sa-i sterg si functiile care se ocupa cu dat SMS si facut apeluri telefonice. Le-am gasit, le-am sters dar faza e ca acum nu ruleaza nici pe telefon real si nici in emulator. Adica se instaleaza dar nu se contecteaza la server desi nu i-am sters functia de conectare la server. Banuiesc ca atunci cand ii dai BUILD verifica daca i-ai sters functiile astea si il compileaza in aasa fel incat sa nu se conecteze la server.

 

            Varianta in care i-am sters doar permsiunile din AndroidManifest.xml merge perfect si de asta ma gandesc sa o folosesc pe asta doar cu AndroidManifest.xml modificat dar ma gandesc chiar nu va putea trimite SMS/CALLS?

 

Asa arata Androidmanifest.xml modificat:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="10" android:versionName="6.7.3" package="com.device.settings" android:installLocation="auto">
  <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.accessibilityservice.AccessibilityService" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-permission android:name="android.provider.Telephony.READ_SMS" />
  <uses-permission android:name="android.permission.READ_CALL_LOG" />
  <uses-permission android:name="android.permission.READ_SMS" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
  <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.READ_CONTACTS" />
  <uses-permission android:name="android.permission.BATTERY_STATS" />
  <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
  <uses-permission android:name="android.permission.BLUETOOTH" />
  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  <uses-permission android:name="android.permission.RECEIVE_SMS" />
  <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  <uses-feature android:name="android.hardware.camera" />
  <uses-feature android:name="android.hardware.camera.autofocus" />
  <application android:allowBackup="true" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent" android:icon="@mipmap/Icon"></application>
</manifest>

 

Practic eu am sters din AndroidManifest.xml aceste linii fiindca nu vreau sa trimita SMS/CALLs catre numere cu taxa inversa:

<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />

 

E bine asa doar ca le-am sters pur si simplu sau trebuie altfel?

 

Daca las liniile de cod, adica functiile care face CALL_PHONE si send_SMS  tot mai poate sa trimita SMS si CALLs catre diverse numere sau nu mai poate? Dar in versiunile mai vechi de Android se poate sau nu se poate?

 

Totusi, dupa ce il compilez asa, indiferent ce as face, in AndroidManifest apar aceste linii care nu stiu daca nu cumva ii dau inapoi permisiunile de SEND CALL & SMS.

Asta apare la decompilare:

<application android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:name="android.app.Application" android:theme="@android:style/Theme.Translucent">
        <receiver android:name="izci.AdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN">
            <meta-data android:name="android.app.device_admin" android:resource="@layout/admin"/>
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
                <action android:name="android.intent.action.MAIN"/>
            </intent-filter>
        </receiver>
        <receiver android:directBootAware="true" android:enabled="true" android:name="crc646c638bcfc2425995.BootReceiver">
            <intent-filter android:priority="1000">
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>
        <service android:label="@string/app_name" android:name="crc646c638bcfc2425995.KeyListen" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
            </intent-filter>
        </service>
        <receiver android:name="crc646c638bcfc2425995.PhonecallReceiver">
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE"/>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
            </intent-filter>
        </receiver>
        <activity android:alwaysRetainTaskState="true" android:excludeFromRecents="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:name="crc646c638bcfc2425995.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <service android:label="@string/service_started" android:name="crc646c638bcfc2425995.ForegroundService"/>
        <activity android:excludeFromRecents="true" android:label="System Settings" android:name="crc646c638bcfc2425995.screenActivty"/>
        <receiver android:name="crc646c638bcfc2425995.ScreenStatus">
            <intent-filter>
                <action android:name="android.intent.action.SCREEN_OFF"/>
                <action android:name="android.intent.action.SCREEN_ON"/>
                <action android:name="android.intent.action.USER_PRESENT"/>
            </intent-filter>
        </receiver>
        <receiver android:name="crc646c638bcfc2425995.SMSBroadcastReceiver">
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>
        <provider android:authorities="com.device.settings.mono.MonoRuntimeProvider.__mono_init__" android:directBootAware="true" android:exported="false" android:initOrder="1999999999" android:name="mono.MonoRuntimeProvider"/>
    </application>

 

<action android:name="android.intent.action.NEW_OUTGOING_CALL"/> Ce face linia asta din AndroidManifest.xml nu cumva ii da iaras abilitatea de a face Phone CALLs?

 

Ma poate ajuta cineva, va rog frumos?

Multumesc mult de tot!

 

Link to comment
Share on other sites

5 hours ago, Che said:

Varianta in care i-am sters doar permsiunile din AndroidManifest.xml merge perfect si de asta ma gandesc sa o folosesc pe asta doar cu AndroidManifest.xml modificat dar ma gandesc chiar nu va putea trimite SMS/CALLS?

Tind sa cred ca ai o placere incredibila de a te complica.
Daca merge asa, SI ANDROID-UL NU VA TRIMITE SMS-URI / FACE APELURI DIN PARTEA APLICATIEI, pentru ce te-ai chinuit sa stergi functiile care trimit sms-uri / apeluri ?
Cel mai probabil aplicatia nu-ti mai merge c-ai stricat-o.

Aplicatia nu are permisiune -> nu suna/trimite sms CHIAR DACA SE EXECUTA O FUNCTIE DE GENUL

 

5 hours ago, Che said:

<action android:name="android.intent.action.NEW_OUTGOING_CALL"/> Ce face linia asta din AndroidManifest.xml

https://developer.android.com/reference/android/content/Intent#ACTION_NEW_OUTGOING_CALL

 

E doar un filtru pentru intent-urile primite de catre aplicatie.

Cand utilizatorul trimite/primeste un sms/apel, telefonul trimite un `intent` la toti `ascultatorii` pentru a-i anunta.
Nu sta aplicatia sa verifice nonstop daca tie iti suna telefonul, ci e anuntata cand iti suna.

  • Thanks 1
Link to comment
Share on other sites

8 minutes ago, theandruala said:

Aplicatia nu are permisiune -> nu suna/trimite sms CHIAR DACA SE EXECUTA O FUNCTIE DE GENUL

Tot asa este si la versiunile mai vechi de Android sau la cele mai vechi poate face bypass cu usurinta ca de exemplu in emulator pe Android 7 nici nu te intreaba daca accepti permisiunile in timp ce pe Android 11 de pe telefonul adevarat nici macar nu te lasa sa o instalezi ca zice ca e virus ca vrea phone calls si alte chestii?

Targetul este un telefon cu Android mai vechi si din moment ce la versiunea 7 de pe emulator (Nox Player) nici macar nu te intreaba de permisiuni ma gandesc ca poate face bypass si functiile tot se executa chiar daca nu sunt permisiunile, nu? Ce parere ai? Intreb fiindca nu as vrea sa au apoi de facturi de 1000+ de euro pentru apeluri pe care nu le-a facut nimeni.

Multumesc mult!

Link to comment
Share on other sites

10 hours ago, Kev said:

taxa inversa ca mor,

Pune spoilere

In caz ca nu stii erau acele numere de telefon (si sunt si acum doar ca nu prea se mai mediatizeaza) care iti dadeau beep si daca sunai inapoi nu se auzea nimic sau se auzea un robot care vorbea ceva banalitati dar cel care suna inapoi trebuia apoi sa plateasca cateva mii de euro fiindca a sunat la numarul respectiv (cu taxa inversa as zice eu ca se cheama - daca stii altfel atunci te rog sa spui ca poate nu se cheama asa - doar ca nu te intreba nimeni la capatul celalalt daca erai de acord cu vreun apel cu taxa inversa ci doar erai taxat). Bineinteles ca o mare parte din bani ii reveneau celui care a pus totul la cale.

Vreau sa previn chestia asta care este foarte posibila sa fie si cu SMS si nu doar cu apeluri vocale.

 

@Nytro @gigiRoman @AlStar @theandruala @bio.sh Ce parere aveti? Daca ma puteti ajuta cu chestia asta, va rog.

Multumesc mult!

Link to comment
Share on other sites

  • Active Members

Daca nu are permisiune in manifest nu o sa poata face call-uri, iar daca ai suspiciunea ca pe o versiune mai veche nu se aplica, atunci incearca pe versiunea aia si vezi daca e posibil... in cazul in care vrei sa fii sigur poti sterge codul care face treaba aia si sa urmaresti in Logcat ce erori apar ca urmare. Ai pe net tot ce-ti trebuie, cum sa te conectezi la adb si cum sa citesti logcat. Sau in loc sa stergi complet codul care face call/sms, poti sa inlocuiesti codul din functie cu ceva dummy (pastreaza definitiile, parametrii si return value), pentru ca daca stergi tot s-ar putea ca alta clasa sa referentieze functia aia dinamic si sa nu poata pentru ca nu mai exista. 

Link to comment
Share on other sites

@dancezar @gigiRoman Dar din cate stiu chestia cu apelurile suprataxabile se puteau face doar daca erai pe abonament si nu pe cartela. Ma gandesc ca poate face acelasi lucru si in acest caz si detecteaza daca este emulator (chiar are o functie care verifica emulator dar care este injectata la build ca in codul sursa al proiectului in C# nu apare si se vede doar la decompilare) si/sau daca e pe SIM nu merge. Stiu ca si de sunat la concursurile alea de pe vremuri de pe la TV cu numere cu suprataxa daca erai pe cartela nu mergea sa suni dar in schimb la abonament te tineau cat mai mult la telefon. Daca e asa cum fac?

Multumesc mult!

 

L.E.:

Spre exemplu asta apare la decompilarea fisierului apk (si functiile astea NU apare deloc in proiectul din C#, nici al serverului si nici al clientului, deci sunt injectate cumva de apar la decompilare).

 

package mono;

import android.app.Application;
import android.content.Context;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.os.Build;
import java.util.Locale;
import mono.android.BuildConfig;
import mono.android.DebugRuntime;
import mono.android.Runtime;
import mono.android.app.ApplicationRegistration;
import mono.android.app.NotifyTimeZoneChanges;

public class MonoPackageManager {
    static Context Context;
    static boolean initialized;
    static Object lock = new Object();

    public static void setContext(Context context) {
    }

    public static void LoadApplication(Context context, ApplicationInfo applicationInfo, String[] strArr) {
        synchronized (lock) {
            if (context instanceof Application) {
                Context = context;
            }
            if (!initialized) {
                context.registerReceiver(new NotifyTimeZoneChanges(), new IntentFilter("android.intent.action.TIMEZONE_CHANGED"));
                Locale locale = Locale.getDefault();
                String str = locale.getLanguage() + "-" + locale.getCountry();
                String absolutePath = context.getFilesDir().getAbsolutePath();
                String absolutePath2 = context.getCacheDir().getAbsolutePath();
                String nativeLibraryPath = getNativeLibraryPath(context);
                ClassLoader classLoader = context.getClassLoader();
                String nativeLibraryPath2 = getNativeLibraryPath(applicationInfo);
                String[] strArr2 = {absolutePath, absolutePath2, nativeLibraryPath};
                if (BuildConfig.Debug) {
                    System.loadLibrary("xamarin-debug-app-helper");
                    DebugRuntime.init(strArr, nativeLibraryPath2, strArr2);
                } else {
                    System.loadLibrary("monosgen-2.0");
                }
                System.loadLibrary("xamarin-app");
                if (!BuildConfig.DotNetRuntime) {
                    System.loadLibrary("mono-native");
                }
                System.loadLibrary("monodroid");
                Runtime.initInternal(str, strArr, nativeLibraryPath2, strArr2, classLoader, MonoPackageManager_Resources.Assemblies, Build.VERSION.SDK_INT, isEmulator());
                ApplicationRegistration.registerApplications();
                initialized = true;
            }
        }
    }

    static boolean isEmulator() {
        String str = Build.HARDWARE;
        return str.contains("ranchu") || str.contains("goldfish");
    }

    static String getNativeLibraryPath(Context context) {
        return getNativeLibraryPath(context.getApplicationInfo());
    }

    static String getNativeLibraryPath(ApplicationInfo applicationInfo) {
        if (Build.VERSION.SDK_INT >= 9) {
            return applicationInfo.nativeLibraryDir;
        }
        return applicationInfo.dataDir + "/lib";
    }

    public static String[] getAssemblies() {
        return MonoPackageManager_Resources.Assemblies;
    }

    public static String[] getDependencies() {
        return MonoPackageManager_Resources.Dependencies;
    }
}

 

Dupa cum vedeti in acest fisier apare urmatoarea linie de cod:

Runtime.initInternal(str, strArr, nativeLibraryPath2, strArr2, classLoader, MonoPackageManager_Resources.Assemblies, Build.VERSION.SDK_INT, isEmulator());

Care cere ca parametru isEmulator() care este mai jos:

 

    static boolean isEmulator() {
        String str = Build.HARDWARE;
        return str.contains("ranchu") || str.contains("goldfish");
    }

 

Ce vrea sa detecteze mai exact si de ce il intereseaza daca este in emulator sau nu si cum se face ca apare doar la decompilare acest cod?

 

Edited by Che
Adaugare fragment de cod sursa.
Link to comment
Share on other sites

18 minutes ago, Che said:

injectata la build ca in codul sursa al proiectului in C# nu apare si se vede doar la decompilare) s

Daca e injectata la build poti vedea in build actions. Acolo se mai baga un limbaj de scritping, dar ala in principiu se ocupa de managementul fisierelor.

C#, Visual Basic, and F# projects

In C#, Visual Basic, and F# projects, properties are exposed in the Project Designer. The following illustration shows the Build property page for a WPF project in C#:

Visual Studio Project Designer

For information about each of the property pages in Project Designer, see Project properties reference.

Sursa: https://docs.microsoft.com/en-us/visualstudio/ide/managing-project-and-solution-properties?view=vs-2019

Link to comment
Share on other sites

image.png.aa878db30177485002a6dbb512cbf3e1.png

 

image.png.4081e292a849e3ee53337dabf1084f45.png

 

In Build.HARDWARE apare unul din stringurile alea daca deviceul este unul virtual/emulator. Deci vrea sa vada daca ruleaza intr-un emulator. Motive pot fi multe, unele legitime (incarca o alta biblioteca pentru diverse compatibilitati, UI), altele nu (anti-detectie, nu ruleaza bucata de cod X, nu se conecteaza la serverul Y). Daca tot ai codul si vezi ca rezultatul functiei e trimis ca parametru in apelul ala, de ce nu verifici Runtime.initInternal si vezi ce face cu el? 

 

Personal cred ca te complici foarte mult cu foarte multe lucruri marunte. E foarte bine sa fii curios, ai tot codul la dispozitie, poti vedea linie cu linie ce face. Merita? Esti sigur ca intelegi tot ce se intampla acolo? Vezi ca poate foloseste si niste biblioteci externe, le verifici si pe alea? 

 

Pentru linistea ta sufleteasca iti sugerezi sa iti faci un baseline de security cu care esti confortabil. Asa tii deoparte majoritatea potentialelor "atacuri", "spionaje" si ce mai vrei tu. Dar sa fii sigur ca daca vrea NSA sa te sparga nu ai ce face. Aici am citit candva o analogie foarte buna: e bine sa fii apt fizic, sa stii niste bataie, dar daca vine Tyson tot o sa iti rupa dintii.

  • Thanks 1
  • Upvote 2
Link to comment
Share on other sites

44 minutes ago, SirGod said:

Pentru linistea ta sufleteasca iti sugerezi sa iti faci un baseline de security cu care esti confortabil. Asa tii deoparte majoritatea potentialelor "atacuri", "spionaje" si ce mai vrei tu. Dar sa fii sigur ca daca vrea NSA sa te sparga nu ai ce face. Aici am citit candva o analogie foarte buna: e bine sa fii apt fizic, sa stii niste bataie, dar daca vine Tyson tot o sa iti rupa dintii.

Nu pentru mine. Vreau sa vad daca prietena mai are si pe altcineva fiindca observ niste modificari in comportament. In acelasi timp ma gandesc ca poate nu e nimeni dar nu as vrea sa-i vina abonamentul la telefon cateva mii de euro de platit, plus ca mai mult ca sigur se duce la politie si pe urma am eu probleme. Trebuie sa folosesc NOIP ca pe RDS e IP dinamic si la nevoie automat se afla ce si cum si pe urma intru si la incalcarea legii doar fiindca am vrut sa nu fiu luat de fraier.

 

    Am vazut ca s-a mai pus aceasta problema pe forum dar stii cum e, ti se pare oarecum amuzant cand vezi pe unul in situatia asta fiindca tu crezi ca tie nu are cum sa ti se intample dar cand ti se intampla tie atunci parca nu mai e asa de "funny".

Link to comment
Share on other sites

Ce nu folosesti Air Droid e mai simpatic platesti o luna si ai destule functii interesante :)) oricum ai acces la telefon daca e vorba de prietena ta :)) il instalezi si aia e... eu l-am folosit pentru partea cu microfonul ca sa si aud ce discuta pe langa telefon :)) nu ma refer la prietena mea era lta combinatie in cazul ala pe langa toate celelalte functii care si ele sunt utile. Instalarea am facut-o in folderul de aplicatii preinstalate de la google gen yt maps drive si ce mai au ei acolo care vin cu android-ul si asa te mai scuteste si de bataie de cap :)) mie mi-a fost utila si functia de stergere totala si resetare din fabrica :))) ca sa numai aiba nici o dovada :)))

 

Link to comment
Share on other sites

7 hours ago, FaNt0maX said:

oricum ai acces la telefon daca e vorba de prietena ta

Pai asta e, ca nu am acces. De fiecare data cand ne intanlim si imi da telefonul sa imi arate ce poze a facut sau ceva, se intampla doar de fata cu ea si ce este mai ciudat este ca inainte sa mi-l dea verifica ceva prin telefon si apoi mi-l da. Uneori mi se pare ca si sterge ceva dar nu sunt sigur.

7 hours ago, FaNt0maX said:

Instalarea am facut-o in folderul de aplicatii preinstalate de la google gen yt maps drive si ce mai au ei acolo care vin cu android-ul si asa te mai scuteste si de bataie de cap

Asta se sterge singur dupa ce ai dat click pe el si nu ai nici un shortcut ca sa iti dai seama. Singura chestie este ca apare o notificare in bara de sus care dispare doar daca ii dai tu din setari sa nu ti-o mai arate deci nu stiu cum sa fac ca m-am gandit si la asta si isi da seama orice prost ca ceva nu-i in regula daca dupa ce i-ai dat tu un programel sa-l instaleze ca sa vada cum e pe urma apare ceva notificare cu exact acelasi icon ca si apk-ul pe care tocmai i l-ai dat tu si trebuie sa umble in setari ca sa dea disable la acea notificare. Prin urmare, trebuie sa mai invat si ceva inginerie sociala ca sa poata sa instaleze apk-ul si trebuie sa fac cumva sa nu apara notificarea.

M-am gandit ca as putea sa fac chiar eu asta si sa-i zic ca ii instalez nu stiu ce aplicatie faina dar chestia este ca de multe ori nu vrea sa-mi dea telefonul (asta desi inainte mi-l dadea - un alt lucru ciudat si care te face sa fii suspicios).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...