- Obfuscate code helps.
- JS Bundles - https://github.com/vesselsoft/metro-minify-obfuscator
- Android -
Proguard/R8 - iOS - I dont know any that is open-source and works. Before deprecation,
BITCODEwas used. However there is a commercial one callediXGuard. - JS are still easier to
decompile/deobfuscatethannative, so ideally, if you can, the more you implement in thenativeside, the better. That's why one of the recommendations below is to use a single point of implementation, withRustorC++.
Jailbreak/rooted/emulatorchecks, close app if detected.- https://github.com/react-native-device-info/react-native-device-info#isemulator
| import { ThemedText } from "@/components/themed-text"; | |
| import { BottomSheet, Button, Host, Slider } from "@expo/ui/swift-ui"; | |
| import { frame, offset } from "@expo/ui/swift-ui/modifiers"; | |
| import { Canvas, Fill, Shader, Skia, vec } from "@shopify/react-native-skia"; | |
| import { useState } from "react"; | |
| import { | |
| PlatformColor, | |
| StyleSheet, | |
| useWindowDimensions, | |
| View, |
| // | |
| // <appname>-Bridging-Header.h <----- replace the app name with your app's name | |
| // <appname> | |
| // | |
| // Created by Efstathios Ntonas on 2/2/24. | |
| // | |
| #ifndef <appname>_Bridging_Header_h | |
| #define <appname>_Bridging_Header_h |
| const { getSentryExpoConfig } = require('@sentry/react-native/metro') | |
| const { withNativeWind } = require('nativewind/metro') | |
| const path = require('path') | |
| const config = getSentryExpoConfig(__dirname) | |
| config.transformer.getTransformOptions = async () => ({ | |
| transform: { | |
| experimentalImportSupport: true, | |
| inlineRequires: true, |
| diff --git a/android/app/src/main/java/dev/expo/kudo/sdk50/MainApplication.kt b/android/app/src/main/java/dev/expo/kudo/sdk50/MainApplication.kt | |
| index e9a2f7a..fbf9aae 100644 | |
| --- a/android/app/src/main/java/dev/expo/kudo/sdk50/MainApplication.kt | |
| +++ b/android/app/src/main/java/dev/expo/kudo/sdk50/MainApplication.kt | |
| @@ -14,10 +14,12 @@ import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load | |
| import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost | |
| import com.facebook.react.defaults.DefaultReactNativeHost | |
| import com.facebook.react.flipper.ReactNativeFlipper | |
| +import com.facebook.react.modules.network.OkHttpClientProvider | |
| import com.facebook.soloader.SoLoader |
The target audience for this is people who are beginners at software engineering and using linux. A lot of the information here may be obvious or already known to you. The language involved is C but you do not need to know any C to read this tutorial. I used mg to write this blog post. I used vs code to edit the source code.
This post is also available on gopher://tilde.team:70/0/~river/tweak-free-software
If you use a piece of free software and it's 99% perfect but there's just this one thing it does that annoys the hell out of you.. you can in theory just fix it! Here's a look at what doing that is like. Hopefully it inspires you, or you pick up a could tricks on the way!
(EDIT: Besides Reddit, I've also put this up on Github Gist)
So while looking for information on security keys before getting one myself, I got very confused reading about all the different modes and advertised features of Yubikeys and other similar dongles. The official documentation tends to be surprisingly convoluted at times, weirdly organized and oddly shy about a few of the limitations of these keys (which I'm making a point of putting front and center). Now that I have one, I decided to write down everything I figured out in order to help myself (and hopefully some other people reading this) make sense of all this.
Since I'm partly writing these notes for myself, there might be some back and forth between "exp
| # .github/workflows/test.yaml | |
| name: test | |
| on: push | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| # Service containers to run with `container-job` | |
| services: | |
| # Label used to access the service container | |
| postgres: |
| job "homebridge" { | |
| datacenters = ["dc1"] | |
| group "server" { | |
| network { | |
| port "http" { | |
| to = 8581 | |
| } | |
| } |