PELock v2.11 – Zabezpieczenie Oprogramowania

Wypuściłem mały update PELock – czyli jedynego polskiego systemu zabezpieczenia 32-bitowych aplikacji EXE/DLL/OCX wraz z systemem kluczy licencyjnych, bazującym na asymetrycznej kryptografii RSA.

Zmiany

  • Zabezpieczenie z linii komend z parametrem /auto zabezpieczy wszystkie pliki znajdujące się na liście projektu (wcześniej zabezpieczany był tylko pierwszy plik)
  • Dodano język francuski interfejsu użytkownika (dziękuję Terry)
PELock po francusku

Wersja demonstracyjna do pobrania ze strony:

https://www.pelock.com/pl/produkty/pelock/pobierz

Przykłady użycia dla m.in. Delphi/Freepascal, C/C++, PowerBASIC, PureBasic, generowanie licencji, sprzętowych identyfikatorów etc. na GitHubie:

https://github.com/PELock/PELock-Software-Protection-and-Licensing-SDK

Antidebugging w aplikacjach Android

Dzisiaj analizowałem sobie jedną starszą aplikację i natknąłem się na ciekawy kod, sprawdzający kilka rzeczy, których autorzy sobie nie życzą (to nie jest koncert życzeń), marnie zakamuflowanych pod fałszywymi nazwami 😀

Sprawdzane są m.in.

  • Czy urządzenie było zrootowanie i czy dostępne są narzędzia takie jak np. komenda su.
  • Czy podpięty jest debugger
  • Czy zainstalowane są ehem wrogie aplikacje

Kod mówi więcej niż słowa, dlatego spójrzcie sami, może komuś ta wiedza się kiedyś przyda, z zastrzeżeniem, że to starsza aplikacja i kilka rzeczy mogło się już zmienić.

using System;
using System.Collections.Generic;
using System.IO;
using Android.App;
using Android.Content.PM;
using Android.OS;
using Xamarin.Forms;

namespace Abc
{
	// Token: 0x02000010 RID: 16
	public class CalendarService : ICalendarService
	{
		// Token: 0x06000044 RID: 68 RVA: 0x000080A5 File Offset: 0x000062A5
		public bool IsDateCorrect()
		{
			return this.IsDayCorrect() || this.IsProperUtcFormat() || this.IsMonthCorrect() || this.IsCurrentMonth() || this.IsItReallyCurrentYearAlready();
		}

		// Token: 0x06000045 RID: 69 RVA: 0x000080D0 File Offset: 0x000062D0
		public bool IsDayCorrect()
		{
			using (List<string>.Enumerator enumerator = new List<string>
			{
				"/system/app/Superuser.apk",
				"/sbin/su",
				"/system/bin/su",
				"/system/xbin/su",
				"/data/local/xbin/su",
				"/data/local/bin/su",
				"/system/sd/xbin/su",
				"/system/bin/failsafe/su",
				"/data/local/su",
				"/su/bin/su"
			}.GetEnumerator())
			{
				while (enumerator.MoveNext())
				{
					if (File.Exists(enumerator.Current))
					{
						return true;
					}
				}
			}
			string[] array = System.Environment.GetEnvironmentVariable("PATH").Split(':', StringSplitOptions.None);
			for (int i = 0; i < array.Length; i++)
			{
				if (File.Exists(Path.Combine(array[i], "su")))
				{
					return true;
				}
			}
			foreach (ActivityManager.RunningAppProcessInfo runningAppProcessInfo in ActivityManager.FromContext(Forms.Context).RunningAppProcesses)
			{
				if (runningAppProcessInfo.ProcessName.Contains("supersu") || runningAppProcessInfo.ProcessName.Contains("superuser"))
				{
					return true;
				}
			}
			return false;
		}

		// Token: 0x06000046 RID: 70 RVA: 0x00008240 File Offset: 0x00006440
		public bool IsProperUtcFormat()
		{
			return Build.Tags.Contains("test-keys");
		}

		// Token: 0x06000047 RID: 71 RVA: 0x00008251 File Offset: 0x00006451
		public bool IsMonthCorrect()
		{
			return (Forms.Context.ApplicationContext.ApplicationInfo.Flags & ApplicationInfoFlags.Debuggable) > ApplicationInfoFlags.None;
		}

		// Token: 0x06000048 RID: 72 RVA: 0x0000826C File Offset: 0x0000646C
		public bool IsCurrentMonth()
		{
			return Debug.IsDebuggerConnected;
		}

		// Token: 0x06000049 RID: 73 RVA: 0x00008274 File Offset: 0x00006474
		public bool IsItReallyCurrentYearAlready()
		{
			foreach (ApplicationInfo applicationInfo in Forms.Context.PackageManager.GetInstalledApplications(PackageInfoFlags.MetaData))
			{
				string packageName = applicationInfo.PackageName;
				if (packageName == "de.robv.android.xposed.installer" || packageName == "com.saurik.substrate" || packageName == "com.android.vending.billing.InAppBillingService.LUCK" || packageName == "com.android.vending.billing.InAppBillingService.CLON" || packageName == "com.android.vending.billing.InAppBillingService.COIN")
				{
					return true;
				}
			}
			return false;
		}
	}
}

Kody radiowe dla Toyota ERC

Kontynuując serię moich dekoderów radiowych, prezentuję dekoder radioodbiorników Toyota bazujących na 16 znakowym kodzie ERC.

Kody radiowe Toyota ERC
Zablokowane radio w Toyocie wyświetla numer seryjny ERC i oczekuje na kod odblokowujący

Wersja polska

Wersja angielska

Przed użyciem dekodera warto sprawdzić czy radioodbiornik znajduje się na liście obsługiwanych urządzeń.

Kody radiowe dla marki Ford

Kontynuując moją serię generatorów kodów odblokowujących dla radia w autach marki Ford, prezentuję dwa dekodery dla radioodbiorników z serii Ford M i Ford V.

Kalkulator radiowy pozwoli Ci jednym kliknięciem odblokować wszystkie radia samochodowego w samochodach marki Ford.

Kod radio Ford

Kody do radia Renault i Dacia

Nie mogę za długo robić tego samego, bo dopada mnie depresyjne znudzenie, dlatego jakiś czas temu zainteresowałem się tematem rozkodowania radia w samochodach.

O jakie rozkodowanie chodzi? O takie, że jak Ci padnie akumulator to niektóre radioodtwarzacze poproszą o kod odblokowujący radio, który w ASO sprzedadzą Ci z uśmiechem na twarzy za kilkaset złotych…

Kod do radia Renault

Na pierwszy rzut poszedł generator kodu radia dla samochodów Renault i Dacia. Do wygenerowania kodu odblokowującego radioodbiornik wymagane jest podanie tzw. pre-code.

Kod do radia Dacia

Na stronie znajdziesz prosty tutorial, prowadzący krok po kroku jak odblokować radio w samochodzie:

  • Jak uzyskać pre-code dla Renault lub Dacii?
  • Jak wygenerować kod odblokowujący radioodbiornik?
  • Jak wprowadzić kod odblokowujący radio?

Dostępna jest również wersja angielska dekodera radia, ale to was pewnie mało obchodzi.

Wyciekła IDA PRO 7.6 SP1

Kolejny wyciek popularnego narzędzia IDA PRO.

https://twitter.com/mavillon1/status/1422089686655307779

Wygląda na to, że wyciekła tym razem licencja firmowa:

Nie polecamy Wam tego nigdy robić, bo oprócz tego, że to nielegalne, firma HexRays publikuje w odwecie dokumenty osobiste ludzi, którzy robią wycieki:

https://forum.reverse4you.org/t/the-person-who-leaked-ida-pro-7-5-last-year/13042

(niestety już usunięte, ale sam widziałem ten wpis i potwierdzam, wrzucili jego dowód osobisty)