PageSourceSearch

https://reactivezero.com/mobile-app-testing.html

html reactivezero.com collected 2026-09-26 14:38:29 UTC 60,697 bytes, 1,162 lines download raw bytes

1<!DOCTYPE html>
2<html data-wf-page="6836fde44810be6c23b92202" data-wf-site="6836fde34810be6c23b92000" lang="en">
3
4<head>
5    <!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 5-6
5
6    <script async src="https://www.googletagmanager.com/gtag/js?id=
6G-HJNWNC3C5K
vendor: 16 bytes, lines 6-7
6"></script>
7    
7<script>
8      
vendor: 146 bytes, lines 8-12
8window.dataLayer = window.dataLayer || [];
9      function gtag(){dataLayer.push(arguments);}
10      gtag('js', new Date());
11
12      gtag('config', '
12G-HJNWNC3C5K
vendor: 8 bytes, lines 12-13
12');
13    
13</script>
13
14
15    <meta charset="utf-8" />
16    <meta content="width=device-width, initial-scale=1" name="viewport" />
17    <!-- rz-seo-head:start -->
18    <title>Mobile App Penetration Testing iOS &amp; Android | ReactiveZero</title>
19    <meta name="description" content="Mobile app penetration testing from the Netherlands: iOS and Android apps tested to OWASP MASVS, incl. API back-ends, storage and auth. Retest included.">
20    <link rel="canonical" href="https://reactivezero.com/mobile-app-testing.html">
21    <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1">
22    <link rel="alternate" hreflang="en" href="https://reactivezero.com/mobile-app-testing.html">
23    <link rel="alternate" hreflang="nl" href="https://reactivezero.com/nl/mobile-app-testing.html">
24    <link rel="alternate" hreflang="de" href="https://reactivezero.com/de/mobile-app-testing.html">
25    <link rel="alternate" hreflang="fr" href="https://reactivezero.com/fr/mobile-app-testing.html">
26    <link rel="alternate" hreflang="es" href="https://reactivezero.com/es/mobile-app-testing.html">
27    <link rel="alternate" hreflang="x-default" href="https://reactivezero.com/mobile-app-testing.html">
28    <meta property="og:type" content="website">
29    <meta property="og:site_name" content="ReactiveZero">
30    <meta property="og:locale" content="en_GB">
31    <meta property="og:url" content="https://reactivezero.com/mobile-app-testing.html">
32    <meta property="og:title" content="Mobile App Penetration Testing iOS &amp; Android | ReactiveZero">
33    <meta property="og:description" content="Mobile app penetration testing from the Netherlands: iOS and Android apps tested to OWASP MASVS, incl. API back-ends, storage and auth. Retest included.">
34    <meta property="og:image" content="https://reactivezero.com/images/og-default.png">
35    <meta property="og:image:width" content="1200">
36    <meta property="og:image:height" content="630">
37    <meta property="og:image:alt" content="ReactiveZero - Mobile App Penetration Testing iOS &amp; Android | ReactiveZero">
38    <meta name="twitter:card" content="summary_large_image">
39    <meta name="twitter:title" content="Mobile App Penetration Testing iOS &amp; Android | ReactiveZero">
40    <meta name="twitter:description" content="Mobile app penetration testing from the Netherlands: iOS and Android apps tested to OWASP MASVS, incl. API back-ends, storage and auth. Retest included.">
41    <meta name="twitter:image" content="https://reactivezero.com/images/og-default.png">
42    <meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
43    <meta name="theme-color" content="#14151a" media="(prefers-color-scheme: dark)">
44    <link rel="icon" href="/favicon.ico" sizes="48x48">
45    <link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32">
46    <link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16">
47    <link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
48    <link rel="manifest" href="/site.webmanifest">
49    <!-- rz-seo-head:end -->
50
51    <style>
52        .section_service_detail {
53            padding-top: 3rem; /* Adjust as needed */
54            padding-bottom: 3rem; /* Adjust as needed */
55        }
56        .service_detail_component {
57            /* Add any specific styling for the component wrapper if needed */
58        }
59        .service_steps_list {
60            list-style: none;
61            padding-left: 0;
62        }
63        .service_step_item {
64            display: flex;
65            align-items: flex-start; /* Align items to the start of the flex container */
66            margin-bottom: 2rem;
67            padding: 1.5rem;
68            border: 1px solid var(--color-scheme-1--border);
69            border-radius: 8px;
70            background-color: var(--color-scheme-1--foreground); /* Match contact form section */
71        }
72        .service_step_number {
73            display: flex;
74            align-items: center;
75            justify-content: center;
76            width: 40px; /* Fixed width for the number circle */
77            height: 40px; /* Fixed height for the number circle */
78    background-color: #FFFFFF; /* Changed to white */
79    color: #7d14d7; /* Changed to theme color */
80            border-radius: 50%;
81            font-weight: bold;
82            margin-right: 1.5rem;
83            flex-shrink: 0; /* Prevent shrinking */
84        }
85        .service_step_item h4 {
86            margin-top: 0; /* Remove default top margin from h4 if any */
87            margin-bottom: 0.5rem;
88        }
89         .service_step_item p {
90            margin-bottom: 0; /* Remove default bottom margin from p if any */
91        }
92
93        /* Re-use layout238_item styling for consistency if desired, or define new ones */
94        .layout238_list { /* This class is already defined and used in index.html */
95            display: grid;
96            gap: 2rem; /* Adjust gap as needed */
97            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); /* Responsive grid */
98        }
99        .layout238_item { /* This class is already defined and used in index.html */
100            background-color: var(--color-scheme-1--foreground); /* Match contact form section */
101            padding: 1.5rem;
102            border-radius: 8px;
103            border: 1px solid var(--color-scheme-1--border);
104        }
105        .text-align-center {
106             text-align: center;
107        }
108    </style>
109
110<script type="application/ld+json">
111{
112  "@context": "https://schema.org",
113  "@graph": [
114    {
115      "@type": [
116        "Organization",
117        "ProfessionalService"
118      ],
119      "@id": "https://reactivezero.com/#organization",
120      "name": "ReactiveZero",
121      "url": "https://reactivezero.com/",
122      "logo": {
123        "@type": "ImageObject",
124        "url": "https://reactivezero.com/images/logo-512.png",
125        "width": 512,
126        "height": 512
127      },
128      "email": "[email protected]",
129      "telephone": "+31103220229",
130      "address": {
131        "@type": "PostalAddress",
132        "streetAddress": "Admiraliteitskade 50-923",
133        "postalCode": "3063 ED",
134        "addressLocality": "Rotterdam",
135        "addressRegion": "Zuid-Holland",
136        "addressCountry": "NL"
137      },
138      "identifier": {
139        "@type": "PropertyValue",
140        "propertyID": "KVK",
141        "value": "97512249"
142      },
143      "areaServed": [
144        {
145          "@type": "Country",
146          "name": "Netherlands"
147        },
148        {
149          "@type": "Country",
150          "name": "Europe"
151        }
152      ],
153      "sameAs": [
154        "https://www.linkedin.com/company/reactive-zero",
155        "https://reactivezero.ai/",
156        "https://blog.reactivezero.com/",
157        "https://github.com/reactivezero"
158      ],
159      "brand": {
160        "@type": "Brand",
161        "name": "R0",
162        "url": "https://reactivezero.ai/"
163      }
164    },
165    {
166      "@type": "WebSite",
167      "@id": "https://reactivezero.com/#website",
168      "url": "https://reactivezero.com/",
169      "name": "ReactiveZero",
170      "publisher": {
171        "@id": "https://reactivezero.com/#organization"
172      }
173    },
174    {
175      "@type": "WebPage",
176      "@id": "https://reactivezero.com/mobile-app-testing.html#webpage",
177      "url": "https://reactivezero.com/mobile-app-testing.html",
178      "name": "Mobile App Penetration Testing iOS & Android | ReactiveZero",
179      "isPartOf": {
180        "@id": "https://reactivezero.com/#website"
181      },
182      "about": {
183        "@id": "https://reactivezero.com/#organization"
184      },
185      "inLanguage": "en"
186    },
187    {
188      "@type": "Service",
189      "serviceType": "Mobile Application Penetration Testing",
190      "name": "Mobile Application Penetration Testing (iOS & Android)",
191      "provider": {
192        "@id": "https://reactivezero.com/#organization"
193      },
194      "areaServed": {
195        "@type": "Country",
196        "name": "Netherlands"
197      },
198      "url": "https://reactivezero.com/mobile-app-testing.html"
199    },
200    {
201      "@type": "BreadcrumbList",
202      "@id": "https://reactivezero.com/mobile-app-testing.html#breadcrumb",
203      "itemListElement": [
204        {
205          "@type": "ListItem",
206          "position": 1,
207          "name": "Home",
208          "item": "https://reactivezero.com/"
209        },
210        {
211          "@type": "ListItem",
212          "position": 2,
213          "name": "Mobile App Testing",
214          "item": "https://reactivezero.com/mobile-app-testing.html"
215        }
216      ]
217    }
218  ]
219}
220</script>
220
221    <link href="css/reactivezero.webflow.shared.825139f12.css" rel="stylesheet" type="text/css" />
222    <link href="css/redesign.css?v=20260915-phone" rel="stylesheet" type="text/css" />
223    
223<script src="js/theme.js?v=20260915-phone" type="text/javascript"></script>
223
224    
224<script type="text/javascript">
225        ! function (o, c) {
226            var n = c.documentElement,
227                t = " w-mod-";
228            n.className += t + "js", ("ontouchstart" in o || o.DocumentTouch && c instanceof DocumentTouch) && (n.className += t + "touch")
229        }(window, document);
230    </script>
230
231  
231<script>
232
233    function submitForm(event) {
234    event.preventDefault();
235
236    const form = document.getElementById('contact-form');
237    const successMessage = document.getElementById('success-message');
238    const submitButton = form.querySelector('input[type="submit"]');
239
240    // Collect form data
241    const formData = new FormData(form);
242
243    // Disable submit button during submission
244    submitButton.value = 'Sending...';
245    submitButton.disabled = true;
246
247    // Send AJAX request
248    fetch('contact.php', {
249        method: 'POST',
250        body: formData
251    })
252    .then(response => response.json())
253    .then(data => {
254        if (data.success) {
255            // Show success message
256            successMessage.style.display = 'block';
257            // Reset form
258            form.reset();
259        } else {
260            alert('There was an error sending your message. Please try again.');
261        }
262    })
263    .catch(error => {
264        console.error('Error:', error);
265        alert('There was an error sending your message. Please try again.');
266    })
267    .finally(() => {
268        // Re-enable submit button
269        submitButton.value = 'Submit Request';
270        submitButton.disabled = false;
271    });
272
273    return false;
274}
275  </script>
275
276    <!-- Keep this css code to improve the font quality-->
277    <style>
278        * {
279            -webkit-font-smoothing: antialiased;
280            -moz-osx-font-smoothing: grayscale;
281            -o-font-smoothing: antialiased;
282        }
283    </style>
284    
284<script type="text/javascript">
285    (function(c,l,a,r,i,t,y){
286        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
287        t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
288        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
289    })(window, document, "clarity", "script", "y05qed79m6");
290    </script>
290
291</head>
292
293<body>
294    <div class="page-wrapper">
295        <div class="global-styles">
296            <div class="style-overrides w-embed">
297                <style>
298                    /* Ensure all elements inherit the color from its parent */
299                    a,
300                    .w-input,
301                    .w-select,
302                    .w-tab-link,
303                    .w-nav-link,
304                    .w-nav-brand,
305                    .w-dropdown-btn,
306                    .w-dropdown-toggle,
307                    .w-slider-arrow-left,
308                    .w-slider-arrow-right,
309                    .w-dropdown-link {
310                        color: inherit;
311                        text-decoration: inherit;
312                        font-size: inherit;
313                    }
314
315                    /* Focus state style for keyboard navigation for the focusable elements */
316                    *[tabindex]:focus-visible,
317                    input[type="file"]:focus-visible {
318                        outline: 0.125rem solid #4d65ff;
319                        outline-offset: 0.125rem;
320                    }
321
322                    /* Get rid of top margin on first element in any rich text element */
323                    .w-richtext> :not(div):first-child,
324                    .w-richtext > div:first-child > :first-child {
325                        margin-top: 0 !important;
326                    }
327
328                    /* Get rid of bottom margin on last element in any rich text element */
329                    .w-richtext>:last-child,
330                    .w-richtext ol li:last-child,
331                    .w-richtext ul li:last-child {
332                        margin-bottom: 0 !important;
333                    }
334
335                    /* Prevent all click and hover interaction with an element */
336                    .pointer-events-off {
337                        pointer-events: none;
338                    }
339
340                    /* Enables all click and hover interaction with an element */
341                    .pointer-events-on {
342                        pointer-events: auto;
343                    }
344
345                    /* Create a class of .div-square which maintains a 1:1 dimension of a div */
346                    .div-square::after {
347                        content: "";
348                        display: block;
349                        padding-bottom: 100%;
350                    }
351
352                    /* Make sure containers never lose their center alignment */
353                    .container-medium,
354                    .container-small,
355                    .container-large {
356                        margin-right: auto !important;
357                        margin-left: auto !important;
358                    }
359
360
361                    /* Apply "..." after 3 lines of text */
362                    .text-style-3lines {
363                        display: -webkit-box;
364                        overflow: hidden;
365                        -webkit-line-clamp: 3;
366                        -webkit-box-orient: vertical;
367                    }
368
369                    /* Apply "..." after 2 lines of text */
370                    .text-style-2lines {
371                        display: -webkit-box;
372                        overflow: hidden;
373                        -webkit-line-clamp: 2;
374                        -webkit-box-orient: vertical;
375                    }
376
377                    /* Adds inline flex display */
378                    .display-inlineflex {
379                        display: inline-flex;
380                    }
381
382                    /* These classes are never overwritten */
383                    .hide {
384                        display: none !important;
385                    }
386
387                    /* Remove default Webflow chevron from form select */
388                    select {
389                        -webkit-appearance: none;
390                    }
391
392
393                    @media screen and (max-width: 991px) {
394                        .hide,
395                        .hide-tablet {
396                            display: none !important;
397                        }
398                    }
399
400                    @media screen and (max-width: 767px) {
401                        .hide-mobile-landscape {
402                            display: none !important;
403                        }
404                    }
405
406                    @media screen and (max-width: 479px) {
407                        .hide-mobile {
408                            display: none !important;
409                        }
410                    }
411
412                    .margin-0 {
413                        margin: 0rem !important;
414                    }
415
416                    .padding-0 {
417                        padding: 0rem !important;
418                    }
419
420                    .spacing-clean {
421                        padding: 0rem !important;
422                        margin: 0rem !important;
423                    }
424
425                    .margin-top {
426                        margin-right: 0rem !important;
427                        margin-bottom: 0rem !important;
428                        margin-left: 0rem !important;
429                    }
430
431                    .padding-top {
432                        padding-right: 0rem !important;
433                        padding-bottom: 0rem !important;
434                        padding-left: 0rem !important;
435                    }
436
437                    .margin-right {
438                        margin-top: 0rem !important;
439                        margin-bottom: 0rem !important;
440                        margin-left: 0rem !important;
441                    }
442
443                    .padding-right {
444                        padding-top: 0rem !important;
445                        padding-bottom: 0rem !important;
446                        padding-left: 0rem !important;
447                    }
448
449                    .margin-bottom {
450                        margin-top: 0rem !important;
451                        margin-right: 0rem !important;
452                        margin-left: 0rem !important;
453                    }
454
455                    .padding-bottom {
456                        padding-top: 0rem !important;
457                        padding-right: 0rem !important;
458                        padding-left: 0rem !important;
459                    }
460
461                    .margin-left {
462                        margin-top: 0rem !important;
463                        margin-right: 0rem !important;
464                        margin-bottom: 0rem !important;
465                    }
466
467                    .padding-left {
468                        padding-top: 0rem !important;
469                        padding-right: 0rem !important;
470                        padding-bottom: 0rem !important;
471                    }
472
473                    .margin-horizontal {
474                        margin-top: 0rem !important;
475                        margin-bottom: 0rem !important;
476                    }
477
478                    .padding-horizontal {
479                        padding-top: 0rem !important;
480                        padding-bottom: 0rem !important;
481                    }
482
483                    .margin-vertical {
484                        margin-right: 0rem !important;
485                        margin-left: 0rem !important;
486                    }
487
488                    .padding-vertical {
489                        padding-right: 0rem !important;
490                        padding-left: 0rem !important;
491                    }
492
493                    /* Apply "..." at 100% width */
494                    .truncate-width {
495                        width: 100%;
496                        white-space: nowrap;
497                        overflow: hidden;
498                        text-overflow: ellipsis;
499                    }
500
501                    /* Removes native scrollbar */
502                    .no-scrollbar {
503                        -ms-overflow-style: none;
504                        overflow: -moz-scrollbars-none;
505                    }
506
507                    .no-scrollbar::-webkit-scrollbar {
508                        display: none;
509                    }
510                </style>
511            </div>
512            <div class="fonts w-embed">
513                <style>
514                    @import url('https://fonts.googleapis.com/css?family=Afacad:400')
515                </style>
516                <style>
517                    @import url('https://fonts.googleapis.com/css?family=Work%20Sans:400,500')
518                </style>
519            </div>
520            <div class="color-schemes w-embed">
521                <style>
522                    .color-scheme-1 {}
523
524                    .color-scheme-2 {
525                        --color-scheme-1--text: var(--color-scheme-2--text);
526                        --color-scheme-1--background: var(--color-scheme-2--background);
527                        --color-scheme-1--foreground: var(--color-scheme-2--foreground);
528                        --color-scheme-1--border: var(--color-scheme-2--border);
529                        --color-scheme-1--accent: var(--color-scheme-2--accent);
530                    }
531
532
533                    .color-scheme-3 {
534                        --color-scheme-1--text: var(--color-scheme-3--text);
535                        --color-scheme-1--background: var(--color-scheme-3--background);
536                        --color-scheme-1--foreground: var(--color-scheme-3--foreground);
537                        --color-scheme-1--border: var(--color-scheme-3--border);
538                        --color-scheme-1--accent: var(--color-scheme-3--accent);
539                    }
540
541
542                    .color-scheme-4 {
543                        --color-scheme-1--text: var(--color-scheme-4--text);
544                        --color-scheme-1--background: var(--color-scheme-4--background);
545                        --color-scheme-1--foreground: var(--color-scheme-4--foreground);
546                        --color-scheme-1--border: var(--color-scheme-4--border);
547                        --color-scheme-1--accent: var(--color-scheme-4--accent);
548                    }
549
550
551
552                    .w-slider-dot {
553                        background-color: var(--color-scheme-1--text);
554                        opacity: 0.20;
555                    }
556
557                    .w-slider-dot.w-active {
558                        background-color: var(--color-scheme-1--text);
559                        opacity: 1;
560                    }
561
562                    /* Override .w-slider-nav-invert styles */
563                    .w-slider-nav-invert .w-slider-dot {
564                        background-color: var(--color-scheme-1--text) !important;
565                        opacity: 0.20 !important;
566                    }
567
568                    .w-slider-nav-invert .w-slider-dot.w-active {
569                        background-color: var(--color-scheme-1--text) !important;
570                        opacity: 1 !important;
571                    }
572                </style>
573            </div>
574        </div>
575
576        <!-- Updated Navigation -->
577        <div data-collapse="medium" data-animation="default" data-duration="400" fs-scrolldisable-element="smart-nav" data-easing="ease" data-easing2="ease" role="banner" class="navbar2_component w-nav">
578            <div class="navbar2_container">
579                <a href="/" class="navbar2_logo-link w-nav-brand">
580    <img loading="lazy" src="images/r1.png" alt="ReactiveZero" class="navbar2_logo" />
581</a>
582                <nav role="navigation" class="navbar2_menu is-page-height-tablet w-nav-menu">
583
584    <a href="/" class="navbar2_link w-nav-link">Home</a>
585
586    <!-- New Dropdown: Solutions -->
587    <div data-delay="200" data-hover="true" class="navbar2_menu-dropdown w-dropdown">
588        <div class="navbar2_dropdwn-toggle w-dropdown-toggle">
589            <div>Solutions</div>
590            <div class="dropdown-chevron w-embed">
591                <svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none"
592                    xmlns="http://www.w3.org/2000/svg">
593                    <path fill-rule="evenodd" clip-rule="evenodd"
594                        d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z"
595                        fill="currentColor" />
596                </svg>
597            </div>
598        </div>
599        <nav class="navbar2_dropdown-list w-dropdown-list">
600            <a href="pentesting.html" class="navbar2_dropdown-link w-dropdown-link">Penetration Testing</a>
601            <a href="red-teaming.html" class="navbar2_dropdown-link w-dropdown-link">Red Teaming</a>
602            <a href="cloud-security-assessments.html" class="navbar2_dropdown-link w-dropdown-link">Cloud Security Assessments</a>
603            <a href="code-review.html" class="navbar2_dropdown-link w-dropdown-link">Code Review</a>
604            <a href="phishing-campaigns.html" class="navbar2_dropdown-link w-dropdown-link">
604Phishing Campaigns</a>
605            <a href="mobile-app-testing.html" class="navbar2_dropdown-link w-dropdown-link">Mobile App Testing</a>
606            <a href="digital-forensics.html" class="navbar2_dropdown-link w-dropdown-link">Digital Forensics</a>
607            <a href="incident-response.html" class="navbar2_dropdown-link w-dropdown-link">Incident Response</a>
608            <a href="malware-analysis.html" class="navbar2_dropdown-link w-dropdown-link">Malware Analysis</a>
609            <a href="custom-projects.html" class="navbar2_dropdown-link w-dropdown-link">Custom Projects</a>
610        </nav>
611    </div>
612
613    <!-- New Dropdown: Industries -->
614    <div data-delay="200" data-hover="true" class="navbar2_menu-dropdown w-dropdown">
615        <div class="navbar2_dropdwn-toggle w-dropdown-toggle">
616            <div>Industries</div>
617            <div class="dropdown-chevron w-embed">
618                <svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none"
619                    xmlns="http://www.w3.org/2000/svg">
620                    <path fill-rule="evenodd" clip-rule="evenodd"
621                        d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z"
622                        fill="currentColor" />
623                </svg>
624            </div>
625        </div>
626        <nav class="navbar2_dropdown-list w-dropdown-list">
627            <a href="https://reactivezero.ai/" target="_blank" rel="noopener" class="navbar2_dropdown-link w-dropdown-link">R0 &mdash; autonomous penetration testing appliance</a>
628        </nav>
629    </div>
630
631    <a href="about.html" class="navbar2_link w-nav-link">About Us</a>
632
633    <div data-delay="200" data-hover="true" class="navbar2_menu-dropdown w-dropdown">
634        <div class="navbar2_dropdwn-toggle w-dropdown-toggle">
635            <div>Resources</div>
636            <div class="dropdown-chevron w-embed">
637                <svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none"
638                    xmlns="http://www.w3.org/2000/svg">
639                    <path fill-rule="evenodd" clip-rule="evenodd"
640                        d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z"
641                        fill="currentColor" />
642                </svg>
643            </div>
644        </div>
645        <nav class="navbar2_dropdown-list w-dropdown-list">
646            <a href="https://blog.reactivezero.com" class="navbar2_dropdown-link w-dropdown-link">Blog</a>
647            <a href="https://github.com/reactivezero" target="_blank" rel="noopener" class="navbar2_dropdown-link w-dropdown-link">Toolkits</a>
648            <a href="https://collab.reactivezero.com" target="_blank" rel="noopener nofollow" class="navbar2_dropdown-link w-dropdown-link" data-translate="collab_platform">Collab Platform</a>
649            <a href="/cdn-cgi/l/email-protection#8fe6e1e9e0cffdeaeeecfbe6f9eaf5eafde0a1ece0e2" class="navbar2_dropdown-link w-dropdown-link">Support</a>
650        </nav>
651    </div>
652
653    <a href="https://careers.reactivezero.com" class="navbar2_link w-nav-link" data-translate="careers">Careers</a>
654    <a href="#contact-section" class="navbar2_link w-nav-link">Contact</a>
655</nav>
656
657                </div>
658            </div>
659        </div>
660
661        <!-- Updated Hero Section -->
662        <!-- Updated Hero Section -->
663<header class="section_header15">
664    <canvas id="rz-particle-canvas"></canvas>
665    <div class="rz-hero-visual rz-hero-visual--lg" aria-hidden="true"><canvas id="rz-visual-mobile"></canvas></div>
666    <div class="padding-global">
667        <div class="container-large">
668            <div class="padding-section-large">
669                <div class="header15_component">
670                    <div class="margin-bottom margin-xxlarge">
671                        <div class="w-layout-grid header15_content-wrapper">
672                            <div class="header15_content-left">
673                                <h1 class="heading-style-h1">Mobile Application Security Testing</h1>
674                            </div>
675                            <div class="header15_content-right">
676                                <p class="text-size-medium">Our Mobile Application Testing services identify vulnerabilities in your iOS and Android applications, protecting user data and ensuring secure mobile experiences.</p>
677                                <div class="margin-top margin-medium">
678                                    <div class="button-group">
679                                        <a href="#contact-section" class="button w-button">Test Your App</a>
680                                    </div>
681                                </div>
682                            </div>
683                        </div>
684                    </div>
685                </div>
686            </div>
687        </div>
688    </div>
689</header>
690
691<section class="section_service_detail">
692    <div class="padding-global">
693        <div class="container-large">
694            <div class="padding-section-large">
695                <div class="service_detail_component">
696                    <h2 class="heading-style-h3 text-align-center">Mobile Application Security Testing</h2>
697                    <div class="margin-top margin-medium">
698                        <p class="text-size-medium">
699                           ReactiveZero offers specialized Mobile Application Security Testing for iOS and Android platforms. We identify vulnerabilities specific to mobile environments, including insecure data storage, weak authentication, and ansecure communication, helping you protect user data and ensure your mobile applications are resilient against attacks.
700                        </p>
701                    </div>
702
703                    <div class="margin-top margin-xlarge">
704                        <!--METHOD:mobile-->
705<div class="rz-m-mobile" data-method="mobile">
706  <div class="rz-m-mobile-head">
707    <span class="rz-m-mobile-eyebrow">
707Methodology · Exploded view</span>
708    <h3 class="heading-style-h4">Testing, layer by layer</h3>
709    <p class="text-size-medium rz-m-mobile-intro">We work down through the application's layers, from the shipped build to the platform beneath it, the way a real attacker would.</p>
710  </div>
711
712  <div class="rz-m-mobile-stage">
713    <div class="rz-m-mobile-device">
714      <div class="rz-m-mobile-scene">
715        <!-- Layer 1 · UI / App logic -->
716        <div class="rz-m-mobile-plane" data-layer="1" aria-hidden="true">
717          <span class="rz-m-mobile-tab">01</span>
718          <div class="rz-m-mobile-glass">
719            <svg viewBox="0 0 100 190" fill="none" stroke="currentColor" stroke-width="2" vector-effect="non-scaling-stroke">
720              <rect x="18" y="10" width="30" height="6" rx="3" stroke="var(--accent)"/>
721              <rect x="18" y="26" width="64" height="20" rx="3"/>
722              <rect x="18" y="54" width="64" height="14" rx="3"/>
723              <rect x="18" y="76" width="64" height="14" rx="3"/>
724              <rect x="18" y="120" width="42" height="12" rx="6" stroke="var(--accent)"/>
725              <path d="M70 126 h12" stroke="var(--accent)"/>
726            </svg>
727          </div>
728        </div>
729        <!-- Layer 2 · Runtime & IPC -->
730        <div class="rz-m-mobile-plane" data-layer="2" aria-hidden="true">
731          <span class="rz-m-mobile-tab">02</span>
732          <div class="rz-m-mobile-glass">
733            <svg viewBox="0 0 100 190" fill="none" stroke="currentColor" stroke-width="2" vector-effect="non-scaling-stroke">
734              <path d="M30 30 c-8 0 -8 8 -8 14 c0 6 -6 6 -6 6 c6 0 6 0 6 6 c0 6 0 14 8 14"/>
735              <path d="M70 30 c8 0 8 8 8 14 c0 6 6 6 6 6 c-6 0 -6 0 -6 6 c0 6 0 14 -8 14"/>
736              <circle cx="50" cy="60" r="3" fill="var(--accent)" stroke="none"/>
737              <rect x="20" y="112" width="24" height="20" rx="3"/>
738              <rect x="56" y="112" width="24" height="20" rx="3"/>
739              <path d="M44 118 h12 M44 126 h12" stroke="var(--accent)"/>
740              <path d="M50 116 l6 2 l-6 2 M50 128 l-6 -2 l6 -2" stroke="var(--accent)"/>
741            </svg>
742          </div>
743        </div>
744        <!-- Layer 3 · Local storage -->
745        <div class="rz-m-mobile-plane" data-layer="3" aria-hidden="true">
746          <span class="rz-m-mobile-tab">03</span>
747          <div class="rz-m-mobile-glass">
748            <svg viewBox="0 0 100 190" fill="none" stroke="currentColor" stroke-width="2" vector-effect="non-scaling-stroke">
749              <ellipse cx="42" cy="34" rx="24" ry="8" stroke="var(--accent)"/>
750              <path d="M18 34 v30 c0 4 11 8 24 8 s24 -4 24 -8 v-30"/>
751              <path d="M18 49 c0 4 11 8 24 8 s24 -4 24 -8"/>
752              <circle cx="66" cy="120" r="7"/>
753              <path d="M72 124 l14 14 M80 132 l4 -4 M84 136 l4 -4" stroke="var(--accent)"/>
754            </svg>
755          </div>
756        </div>
757        <!-- Layer 4 · Network & API -->
758        <div class="rz-m-mobile-plane" data-layer="4" aria-hidden="true">
759          <span class="rz-m-mobile-tab">04</span>
760          <div class="rz-m-mobile-glass">
761            <svg viewBox="0 0 100 190" fill="none" stroke="currentColor" stroke-width="2" vector-effect="non-scaling-stroke">
762              <path d="M30 44 a12 12 0 0 1 23 -4 a10 10 0 0 1 9 16 h-30 a9 9 0 0 1 -2 -12" stroke="var(--accent)"/>
763              <path d="M42 78 v22 M42 78 l-5 6 M42 78 l5 6" stroke="var(--accent)"/>
764              <path d="M58 100 v-22 M58 100 l-5 -6 M58 100 l5 -6"/>
765              <path d="M24 120 l-6 6 l6 6 M76 120 l6 6 l-6 6" />
766              <path d="M40 122 l4 12 M56 122 l4 12" stroke="var(--accent)"/>
767            </svg>
768          </div>
769        </div>
770        <!-- Layer 5 · Platform -->
771        <div class="rz-m-mobile-plane" data-layer="5" aria-hidden="true">
772          <span class="rz-m-mobile-tab">05</span>
773          <div class="rz-m-mobile-glass">
774            <svg viewBox="0 0 100 190" fill="none" stroke="currentColor" stroke-width="2" vector-effect="non-scaling-stroke">
775              <rect x="30" y="40" width="40" height="40" rx="4" stroke="var(--accent)"/>
776              <rect x="42" y="52" width="16" height="16" rx="2"/>
777              <path d="M38 40 v-8 M50 40 v-8 M62 40 v-8 M38 80 v8 M50 80 v8 M62 80 v8 M30 52 h-8 M30 64 h-8 M70 52 h8 M70 64 h8"/>
778              <path d="M50 116 l16 6 v10 c0 10 -8 16 -16 20 c-8 -4 -16 -10 -16 -20 v-10 z" stroke="var(--accent)"/>
779            </svg>
780          </div>
781        </div>
782      </div>
783      <span class="rz-m-mobile-fig">Exploded view</span>
784    </div>
785
786    <ol class="rz-m-mobile-phases">
787      <li class="rz-m-mobile-phase" data-phase="1">
788        <div class="rz-m-mobile-marker"><span class="rz-m-mobile-num">01</span><span class="rz-m-mobile-tick" aria-hidden="true"></span></div>
789        <div class="rz-m-mobile-body">
790          <span class="rz-m-mobile-layer">UI / App logic</span>
791          <h4 class="rz-m-mobile-title">Recon &amp; reversing</h4>
792          <p class="rz-m-mobile-desc">We pull the shipped IPA and APK, decompile with jadx and Hopper, and map every screen, entry point and hardcoded secret.</p>
793          <div class="rz-m-mobile-deliv"><span class="rz-m-mobile-deliv-k">Deliverable</span><span class="rz-m-mobile-deliv-v">Attack-surface map</span></div>
794        </div>
795      </li>
796      <li class="rz-m-mobile-phase" data-phase="2">
797        <div class="rz-m-mobile-marker"><span class="rz-m-mobile-num">02</span><span class="rz-m-mobile-tick" aria-hidden="true"></span></div>
798        <div class="rz-m-mobile-body">
799          <span class="rz-m-mobile-layer">Runtime &amp; IPC</span>
800          <h4 class="rz-m-mobile-title">Runtime instrumentation</h4>
801          <p class="rz-m-mobile-desc">
801On jailbroken and rooted devices we hook the app with Frida, bypass pinning and root detection, and abuse deep links and IPC.</p>
802          <div class="rz-m-mobile-deliv"><span class="rz-m-mobile-deliv-k">Deliverable</span><span class="rz-m-mobile-deliv-v">Runtime PoCs</span></div>
803        </div>
804      </li>
805      <li class="rz-m-mobile-phase" data-phase="3">
806        <div class="rz-m-mobile-marker"><span class="rz-m-mobile-num">03</span><span class="rz-m-mobile-tick" aria-hidden="true"></span></div>
807        <div class="rz-m-mobile-body">
808          <span class="rz-m-mobile-layer">Local storage</span>
809          <h4 class="rz-m-mobile-title">Data-at-rest review</h4>
810          <p class="rz-m-mobile-desc">We inspect the Keychain, Keystore, SQLite and preference files for tokens, credentials and personal data left readable on the device.</p>
811          <div class="rz-m-mobile-deliv"><span class="rz-m-mobile-deliv-k">Deliverable</span><span class="rz-m-mobile-deliv-v">Storage evidence log</span></div>
812        </div>
813      </li>
814      <li class="rz-m-mobile-phase" data-phase="4">
815        <div class="rz-m-mobile-marker"><span class="rz-m-mobile-num">04</span><span class="rz-m-mobile-tick" aria-hidden="true"></span></div>
816        <div class="rz-m-mobile-body">
817          <span class="rz-m-mobile-layer">Network &amp; API</span>
818          <h4 class="rz-m-mobile-title">Traffic &amp; API testing</h4>
819          <p class="rz-m-mobile-desc">Proxying live traffic through Burp, we test transport security, then probe the backend APIs for broken authorisation, IDOR and weak sessions.</p>
820          <div class="rz-m-mobile-deliv"><span class="rz-m-mobile-deliv-k">Deliverable</span><span class="rz-m-mobile-deliv-v">Verified API findings</span></div>
821        </div>
822      </li>
823      <li class="rz-m-mobile-phase" data-phase="5">
824        <div class="rz-m-mobile-marker"><span class="rz-m-mobile-num">05</span><span class="rz-m-mobile-tick" aria-hidden="true"></span></div>
825        <div class="rz-m-mobile-body">
826          <span class="rz-m-mobile-layer">Platform</span>
827          <h4 class="rz-m-mobile-title">Hardening &amp; report</h4>
828          <p class="rz-m-mobile-desc">Finally we review OS-level controls — permissions, biometrics, backup and anti-tampering — and deliver a severity-rated report with prioritised fixes.</p>
829          <div class="rz-m-mobile-deliv"><span class="rz-m-mobile-deliv-k">Deliverable</span><span class="rz-m-mobile-deliv-v">Severity-rated report</span></div>
830        </div>
831      </li>
832    </ol>
833  </div>
834</div>
835<!--/METHOD:mobile-->
836                    </div>
837                    <div class="margin-top margin-xlarge">
838                        <h3 class="heading-style-h4">Platforms & Focus Areas</h3>
839                         <div class="w-layout-grid layout238_list margin-top margin-medium">
840                            <div class="layout238_item">
841                                <h4 class="heading-style-h5">iOS Application Testing</h4>
842                                <p>We test iOS apps against the OWASP Mobile Application Security Verification Standard (MASVS). Our consultants examine local data storage in the Keychain, files and databases, check certificate pinning and transport security, and probe authentication, session handling and biometric flows. We assess resistance to reverse engineering and runtime tampering on jailbroken devices, and inspect how the app handles sensitive data in memory, logs and backups. Every finding is reported with a proof-of-concept, its real impact and a concrete fix, followed by a retest once your developers have remediated.</p>
843                            </div>
844                            <div class="layout238_item">
845                                <h4 class="heading-style-h5">Android Application Testing</h4>
846                                <p>We test Android apps to the OWASP MASVS, starting where attackers do: the APK itself. We review exported activities, services and content providers, over-broad permissions, insecure local storage and weak inter-process communication, then examine authentication, deep-link handling and transport security. Using dynamic analysis and reverse engineering on rooted devices, we assess obfuscation, root detection and runtime manipulation. You receive clear, reproducible findings ranked by exploitability, remediation guidance your developers can a
846pply directly, and a free retest to confirm each issue is resolved.</p>
847                            </div>
848                            <div class="layout238_item">
849                                <h4 class="heading-style-h5">API & Backend Security</h4>
850                                <p>A mobile app is only as secure as the API behind it, so we test both together. We map every backend endpoint the app calls — including hidden and undocumented ones — and probe them for broken object-level and function-level authorization (IDOR), authentication weaknesses, mass assignment, injection and business-logic abuse, guided by the OWASP API Security Top 10. Testing the API directly, not just through the app, uncovers issues the interface hides. Findings arrive with proofs-of-concept and prioritised fixes, and complement our wider web and API penetration testing.</p>
851                            </div>
852                        </div>
853                    </div>
854                </div>
855            </div>
856        </div>
857    </div>
858</section>
859<!-- Add this before the footer -->
860<!-- Related services -->
861<section class="rz-related-services">
862    <div class="padding-global">
863        <div class="container-large">
864            <div class="padding-section-large">
865                <h2 class="heading-style-h5">Related services</h2>
866                <p class="text-size-medium">Mobile app testing pairs with: <a href="pentesting.html">our penetration testing services</a>, <a href="code-review.html">secure code review</a> and <a href="incident-response.html">incident response</a>.</p>
867            </div>
868        </div>
869    </div>
870</section>
871
872<section id="contact-section" class="section_contact">
873    <div class="padding-global">
874        <div class="container-large">
875            <div class="padding-section-large">
876                <div class="contact_component">
877                    <div class="margin-bottom margin-xxlarge">
878                        <div class="text-align-center">
879                            <div class="max-width-large align-center">
880                                <h2 class="heading-style-h3">Get in Touch</h2>
881                                <div class="margin-top margin-small">
882                                    <p class="text-size-medium">Ready to strengthen your security posture? Let's discuss how we can help protect your organization.</p>
883                                </div>
884                            </div>
885                        </div>
886                    </div>
887                    <div class="contact_form-wrapper w-form">
888                        <form id="contact-form" class="contact_form" method="post" onsubmit="return submitForm(event)">
889                            <div class="w-layout-grid contact_form-grid">
890                                <!-- Name Fields -->
891                                <div class="input-wrapper">
892                                    <label for="First-Name" class="field-label">First Name</label>
893                                    <input type="text" class="text-field w-input" name="First-Name" id="First-Name" required>
894                                </div>
895                                <div class="input-wrapper">
896                                    <label for="Last-Name" class="field-label">Last Name</label>
897                                    <input type="text" class="text-field w-input" name="Last-Name" id="Last-Name" required>
898                                </div>
899                                <!-- Contact Fields -->
900                                <div class="input-wrapper">
901                                    <label for="Email" class="field-label">Work Email</label>
902                                    <input type="email" class="text-field w-input" name="Email" id="Email" required>
903                                </div>
904                                <div class="input-wrapper">
905                                    <label for="Phone" class="field-label">Phone Number</label>
906                                    <input type="tel" class="text-field w-input" name="Phone" id="Phone">
907                                </div>
908                                <!-- Company Fields -->
909                                <div class="input-wrapper">
910                                    <label for="Company" class="field-label">Company Name</label>
911                                    <input type="text" class="text-field w-input" name="Company" id="Company" required>
912                                </div>
913                                <div class="input-wrapper">
914                                    <label for="Industry" class="field-label">Industry</label>
915                                    <select id="Industry" name="Industry" class="select-field w-select" required>
916                                        <option value="">Select Industry...</option>
917                                        <option value="Finance">Finance & Banking</option>
918                                        <option value="Healthcare">Healthcare</option>
919                                        <option value="Technology">Technology</option>
920                                        <option value="Manufacturing">Manufacturing</option>
921                                        <option value="Government">Government</option>
922                                        <option value="Other">Other</option>
923                                    </select>
924                                </div>
925                                <!-- Service Selection -->
926                                <div class="input-wrapper full-width">
927                                    <label for="Services" class="field-label">Services of Interest</label>
928                                    <select id="Services" name="Services" class="select-field w-select" required>
929                                        <option value="">Select Service...</option>
930                                        <option value="Pentesting">Penetration Testing</option>
931                                        <option value="RedTeam">Red Team Operations</option>
932                                        <option value="Incident">Incident Response</option>
933                                        <option value="Other">Other Services</option>
934                                    </select>
935                                </div>
936                                <!-- Message Field -->
937                                <div class="input-wrapper full-width">
938                                    <label for="Message" class="field-label">Message</label>
939                                    <textarea id="Message" name="Message" class="textarea w-input" required></textarea>
940                                </div>
941                            </div>
942                            <div class="margin-top margin-large">
943        <input type="submit" value="Submit Request" class="button w-button">
944        <div id="success-message" class="success-message" style="display: none;">
945            We have received your message, we will contact you within 1 working day.
946        </div>
947    </div>
948                        </form>
949                    </div>
950                </div>
951            </div>
952        </div>
953    </div>
954</section>
955
956<style>
957    /* Contact Form Styles */
958    .section_contact {
959        background-color: var(--color-scheme-1--foreground);
960        border-radius: 24px;
961        margin: 2rem;
962    }
963
964    .contact_form-wrapper {
965        max-width: 800px;
966        margin: 0 auto;
967    }
968
969    .contact_form-grid {
970        display: grid;
971        grid-template-columns: 1fr 1fr;
972        gap: 24px;
973    }
974
975    .input-wrapper {
976        display: flex;
977        flex-direction: column;
978        gap: 8px;
979    }
980
981    .input-wrapper.full-width {
982        grid-column: span 2;
983    }
984
985    .field-label {
986        color: var(--color-scheme-1--text);
987        font-weight: 500;
988    }
989
990    .text-field,
991    .select-field,
992    .textarea {
993        background-color: var(--color-scheme-1--background);
994        border: 1px solid var(--color-scheme-1--border);
995        border-radius: 8px;
996        padding: 12px 16px;
997        color: var(--color-scheme-1--text);
998        transition: all 0.3s ease;
999    }
1000
1001    .text-field:focus,
1002    .select-field:focus,
1003    .textarea:focus {
1004        border-color: var(--color-scheme-1--accent);
1005        outline: none;
1006    }
1007
1008    .textarea {
1009        min-height: 120px;
1010        resize: vertical;
1011    }
1012
1013    /* ... existing contact form styles ... */
1014
1015    .select-field {
1016        background-color: var(--color-scheme-1--background);
1017        border: 1px solid var(--color-scheme-1--border);
1018        border-radius: 8px;
1019        padding: 12px 16px;
1020        color: var(--color-scheme-1--text);
1021        transition: all 0.3s ease;
1022        width: 100%;
1023        -webkit-appearance: none;
1024        -moz-appearance: none;
1025        appearance: none;
1026        background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23ffffff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
1027        background-repeat: no-repeat;
1028        background-position: right 16px center;
1029        padding-right: 40px;
1030    }
1031
1032    .select-field option {
1033        background-color: var(--color-scheme-1--background);
1034        color: var(--color-scheme-1--text);
1035        padding: 12px;
1036    }
1037
1038    .select-field:focus {
1039        border-color: var(--color-scheme-1--accent);
1040        outline: none;
1041    }
1042
1043    /* Ensure dropdown options are visible */
1044    .w-select {
1045        background-color: var(--color-scheme-1--background);
1046        color: var(--color-scheme-1--text);
1047    }
1048
1049    /* Style for dropdown when opened */
1050    .select-field:hover,
1051    .select-field:focus {
1052        cursor: pointer;
1053        border-color: var(--color-scheme-1--accent);
1054    }
1055
1056    /* Ensure the dropdown container is visible */
1057    .input-wrapper select {
1058        position: relative;
1059        z-index: 1;
1060    }
1061
1062    /* Additional styling for option elements */
1063    option {
1064        padding: 16px;
1065        min-height: 40px;
1066        display: block;
1067    }
1068
1069    @media screen and (max-width: 767px) {
1070        .contact_form-grid {
1071            grid-template-columns: 1fr;
1072        }
1073
1074        .input-wrapper.full-width {
1075            grid-column: span 1;
1076        }
1077    }
1078</style>
1079
1080    <footer class="footer4_component">
1081        <div class="padding-global">
1082            <div class="container-large">
1083                <div class="padding-vertical padding-xxlarge">
1084                    <div class="padding-bottom padding-xxlarge">
1085                        <div class="w-layout-grid footer4_top-wrapper">
1086                            <a href="#" id="w-node-_4d369eb2-7646-a9e8-0d8c-87c44169bc12-4169bc0c" class="footer4_logo-link w-nav-brand">
1087                                <img loading="eager" height="32px" alt="" src="images/r1.png" class="footer4_logo" />
1088                            </a>
1089                            <div class="w-layout-grid footer4_link-list">
1090                                <a href="#" class="footer4_link">Cyber Solutions</a>
1091                                <a href="#" class="footer4_link">Security Insights</a>
1092                                <a href="#" class="footer4_link">Expert Guidance</a>
1093                                <a href="#" class="footer4_link">Risk Assessment</a>
1094                                <a href="#" class="footer4_link">Contact Us</a>
1095                            </div>
1096                            <div id="w-node-_4d369eb2-7646-a9e8-0d8c-87c44169bc1f-4169bc0c" class="w-layout-grid footer4_social-list">
1097                                <a href="#" class="footer4_social-link w-inline-block">
1098                                    <div class="icon-embed-xsmall w-embed">
1099                                        <svg width="100%" height="100%" viewB
1099ox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1100                                            <path d="M22 12.0611C22 6.50451 17.5229 2 12 2C6.47715 2 2 6.50451 2 12.0611C2 17.0828 5.65684 21.2452 10.4375 22V14.9694H7.89844V12.0611H10.4375V9.84452C10.4375 7.32296 11.9305 5.93012 14.2146 5.93012C15.3088 5.93012 16.4531 6.12663 16.4531 6.12663V8.60261H15.1922C13.95 8.60261 13.5625 9.37822 13.5625 10.1739V12.0611H16.3359L15.8926 14.9694H13.5625V22C18.3432 21.2452 22 17.083 22 12.0611Z" fill="CurrentColor" />
1101                                        </svg>
1102                                    </div>
1103                                </a>
1104                                <a href="#" class="footer4_social-link w-inline-block">
1105                                    <div class="icon-embed-xsmall w-embed">
1106                                        <svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1107                                            <path fill-rule="evenodd" clip-rule="evenodd" d="M16 3H8C5.23858 3 3 5.23858 3 8V16C3 18.7614 5.23858 21 8 21H16C18.7614 21 21 18.7614 21 16V8C21 5.23858 18.7614 3 16 3ZM19.25 16C19.2445 17.7926 17.7926 19.2445 16 19.25H8C6.20735 19.2445 4.75549 17.7926 4.75 16V8C4.75549 6.20735 6.20735 4.75549 8 4.75H16C17.7926 4.75549 19.2445 6.20735 19.25 8V16ZM16.75 8.25C17.3023 8.25 17.75 7.80228 17.75 7.25C17.75 6.69772 17.3023 6.25 16.75 6.25C16.1977 6.25 15.75 6.69772 15.75 7.25C15.75 7.80228 16.1977 8.25 16.75 8.25ZM12 7.5C9.51472 7.5 7.5 9.51472 7.5 12C7.5 14.4853 9.51472 16.5 12 16.5C14.4853 16.5 16.5 14.4853 16.5 12C16.5027 10.8057 16.0294 9.65957 15.1849 8.81508C14.3404 7.97059 13.1943 7.49734 12 7.5ZM9.25 12C9.25 13.5188 10.4812 14.75 12 14.75C13.5188 14.75 14.75 13.5188 14.75 12C14.75 10.4812 13.5188 9.25 12 9.25C10.4812 9.25 9.25 10.4812 9.25 12Z" fill="CurrentColor" />
1108                                        </svg>
1109                                    </div>
1110                                </a>
1111                                <a href="#" class="footer4_social-link w-inline-block">
1112                                    <div class="icon-embed-xsmall w-embed">
1113                                        <svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1114                                            <path d="M17.1761 4H19.9362L13.9061 10.7774L21 20H15.4456L11.0951 14.4066L6.11723 20H3.35544L9.80517 12.7508L3 4H8.69545L12.6279 9.11262L17.1761 4ZM16.2073 18.3754H17.7368L7.86441 5.53928H6.2232L16.2073 18.3754Z" fill="CurrentColor" />
1115                                    </div>
1116                                </a>
1117                                <a href="#" class="footer4_social-link w-inline-block">
1118                                    <div class="icon-embed-xsmall w-embed">
1119                                        <svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1120                                            <path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 3C3.67157 3 3 3.67157 3 4.5V19.5C3 20.3284 3.67157 21 4.5 21H19.5C20.3284 21 21 20.3284 21 19.5V4.5C21 3.67157 20.3284 3 19.5 3H4.5ZM8.52076 7.00272C8.52639 7.95897 7.81061 8.54819 6.96123 8.54397C6.16107 8.53975 5.46357 7.90272 5.46779 7.00413C5.47201 6.15897 6.13998 5.47975 7.00764 5.49944C7.88795 5.51913 8.52639 6.1646 8.52076 7.00272ZM12.2797 9.76176H9.75971H9.7583V18.3216H12.4217V18.1219C12.4217 17.742 12.4214 17.362 12.4211 16.9819V16.9818V16.9816V16.9815V16.9812C12.4203 15.9674 12.4194 14.9532 12.4246 13.9397C12.426 13.6936 12.4372 13.4377 12.5005 13.2028C12.7381 12.3253 13.5271 11.7586 14.4074 11.8979C14.9727 11.9864 15.3467 12.3141 15.5042 12.8471C15.6013 13.1803 15.6449 13.5389 15.6491 13.8863C15.6605 14.9339 15.6589 15.9815 15.6573 17.0292V17.0294C15.6567 17.3992 15.6561 17.769 15.6561 18.1388V18.3202H18.328V18.1149C18.328 17.6629 18.3278 17.211 18.3275 16.7591V16.759V16.7588C18.327 15.6293 18.3264 14.5001 18.3294 13.3702C18.3308 12.8597 18.276 12.3563 18.1508 11.8627C17.9638 11.1286 17.5771 10.5211 16.9485 10.0824C16.5027 9.77019 16.0133 9.5691 15.4663 9.5466C15.404 9.54401 15.3412 9.54062 15.2781 9.53721L15.2781 9.53721L15.2781 9.53721C14.9984 9.52209 14.7141 9.50673 14.4467 9.56066C13.6817 9.71394 13.0096 10.0641 12.5019 10.6814C12.4429 10.7522 12.3852 10.8241 12.2991 10.9314L12.2991 10.9314L12.2797 10.9557V9.76176ZM5.68164 18.3244H8.33242V9.76733H5.68164V18.3244Z" fill="CurrentColor" />
1121                                        </svg>
1122                                    </div>
1123                                </a>
1124                                <a href="#" class="footer4_social-link w-inline-block">
1125                                    <div class="icon-embed-xsmall w-embed">
1126                                        <svg width="100%" height="100%" viewB
1126ox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
1127                                            <path fill-rule="evenodd" clip-rule="evenodd" d="M20.5686 4.77345C21.5163 5.02692 22.2555 5.76903 22.5118 6.71673C23.1821 9.42042 23.1385 14.5321 22.5259 17.278C22.2724 18.2257 21.5303 18.965 20.5826 19.2213C17.9071 19.8831 5.92356 19.8015 3.40294 19.2213C2.45524 18.9678 1.71595 18.2257 1.45966 17.278C0.827391 14.7011 0.871044 9.25144 1.44558 6.73081C1.69905 5.78311 2.44116 5.04382 3.38886 4.78753C6.96561 4.0412 19.2956 4.282 20.5686 4.77345ZM9.86682 8.70227L15.6122 11.9974L9.86682 15.2925V8.70227Z" fill="CurrentColor" />
1128                                        </svg>
1129                                    </div>
1130                                </a>
1131                            </div>
1132                        </div>
1133                        <div class="divider-horizontal"></div>
1134                        <div class="padding-top padding-medium">
1135                            <div class="w-layout-grid footer4_bottom-wrapper">
1136                              <a href="#" class="footer4_legal-link">Admiraliteitskade 50-923<div></div>3063ED, Rotterdam,<div></div> The Netherlands</a><div></div>+31 10 322 0229
1137
1138                                <div id="w-node-_4d369eb2-7646-a9e8-0d8c-87c44169bc2d-4169bc0c" class="footer4_credit-text">© 2025 ReactiveZero. All rights reserved.</div>
1139                                <a href="#" class="footer4_legal-link">Privacy Policy</a>
1140                                <a href="#" class="footer4_legal-link">Terms of Service</a>
1141                                <a href="#" class="footer4_legal-link">Cookies Settings</a>
1142                            </div>
1143                        </div>
1144                    </div>
1145                </div>
1146            </div>
1147        </footer>
1148    </div>
vendor: 113 bytes, lines 1148-1149
1148
1149    <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1149<script src="js/jquery.js?site=6836fde34810be6c23b92000" type="text/javascript"></script>
1149
1150    
1150<script src="js/webflow.schunk.36b8fb49256177c8.js" type="text/javascript"></script>
1150
1151    
1151<script src="js/webflow.schunk.039ed449019d8266.js" type="text/javascript"></script>
1151
1152    
1152<script src="js/webflow-script.js" type="text/javascript"></script>
1152
1153    
1153<script src="js/i18n-strings.js?v=20260915-phone" type="text/javascript"></script>
1153
1154    
1154<script src="js/i18n.js?v=20260915-phone" type="text/javascript"></script>
1154
1155    
1155<script src="js/mobile-nav.js?v=20260915-phone" type="text/javascript"></script>
1155
1156    
1156<script src="js/shared-layout.js?v=20260915-phone" type="text/javascript"></script>
1156
1157    
1157<script src="js/cookie-modal.js?v=20260915-phone" type="text/javascript"></script>
1157
1158    
1158<script src="js/animations.js?v=20260915-phone" type="text/javascript"></script>
vendor: 1 bytes, line 1158
1158
1159<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"70d4e81a4ac44bc9803ebb295e280b35","r":1,"spa":2}' crossorigin="anonymous"></script>
1159
1160</body>
1161
1162</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.