精华内容
下载资源
问答
  • 有时候我们工作中很多项目并不会专门做一个APP端,但是,我们却又需要这么一个APP端。这个时候WebView就可以很方便的帮助我们快速套出一个APP程序

    序言

    有时候我们工作中很多项目并不会去专门做一个APP端,但是,我们却又需要这么一个APP端。这个时候WebView就可以很方便的帮助我们快速套壳出一个APP程序

     

    一.套壳APP

    1.新建一个项目,把新建项目的Activity的最外层布局改成WebView,删去自带的TextView,并给WebView布局加个id

     2.在MainActivity中声明一个WebView,并指向Activity中的id,

    3.在这里先声明让WebView组件跳转后支持JavaScript,默认情况下WebView组件跳转后是不支持JavaScript的

    //让跳转支持JavaScript
    wb.getSettings().setJavaScriptEnabled(true);

    4.加载该网站,这里还没完呢,继续往下看

    //加载该网站
    wb.loadUrl("http://www.baidu.com/");

    5.找到AndroidManifest

    6.在其中去注册我们的网络权限,否则WebView组件无法获取网络权限,无法联网加载我们的Web端网站

    //注册网络权限
    <uses-permission android:name="android.permission.INTERNET" />

     

    到这里,我们基本的就已经做好了,可以跑起来了


    二.常见问题

    我们发现已经套壳好的Android APP跑起来会调用起第三方的手机浏览器,而且你打开后台页面还能看到空白的Activity在后台,这样根本没达到我们所要的效果,我们需要的是在程序中跳转,不调用浏览器,无声无息的跳转,仿佛一个真的APP一样的那种

    我们只需要在加载网站代码“loadurl()“前调用一个方法

    //默认调用浏览器,不是自己变成该网站
    wb.setWebViewClient(new WebViewClient());

    必须要在加载网站前面去加,代码执行顺序基本原则是从上往下跑的,这么说你该懂了吧,像这样

    展开全文
  • 因为安服仔日常有个业务就是ios的app测试,有时候客户给的不是ipa文件,而是让你去appstore下载的app,但是AppStore基本都会给原来的app套上一层,这样子就没办法进行反编译或者程序完整性校验等等这些步骤。...

    前言

    如果ios9.0的版本允许下载安装且可以运行的app,就可以很轻松的用Clutch来砸壳,没有什么难度,可以直接砸。而且对于没有mac的学生党来说,也比较方便,windows就能解决问题了

    • 为什么砸壳?

    因为安服仔日常有个业务就是ios的app测试,有时候客户给的不是ipa文件,而是让你去appstore下载的app,但是AppStore基本都会给原来的app套上一层壳,这样子就没办法进行反编译或者程序完整性校验等等这些步骤。所以需要砸壳


    https://github.com/KJCracks/Clutch/releases/tag/2.0.4
    下载下来后,连接到爱思助手,然后上传到根目录
    在这里插入图片描述然后通过ssh连接手机,局域网内直接对手机的ip连接也可以,也可以通过爱思助手开启ssh通道
    在这里插入图片描述

    chmod +x 先给Clutch赋予可执行的权限
    Clutch -i 可以查看手机里存在加壳的App,如果没有加壳,是不会显示的,所以低版本ios的app也可以通过这个方法来测试ipa文件有没有加壳
    在这里插入图片描述

    Clutch -d 6 要脱壳的app,脱壳成功后获取的ipa文件在/private/var/mobile/Documents/Dumped/目录下
    在这里插入图片描述

    展开全文
  • 组件化中需要一个app壳工程,这个工程中不处理任何业务,就只是一个空壳,由它将所需要的各个组件模块组合起来,构成一个完整的应用。 直接new一个module 接着进入app的AndroidManifest文件将注册Activity...

    组件化中需要一个app壳工程,这个壳工程中不处理任何业务,就只是一个空壳,由它将所需要的各个组件模块组合起来,构成一个完整的应用。

    • 直接new一个module
      1565701603073.png
      1565701638480.png
      1565701662148.png

    • 接着进入app的AndroidManifest文件将注册Activity的相关代码也搬到ModuleMain模块的AndroidManifest中去,只留下application标签。

    这里注意组件化项目中每个Module都会有自己的AndroidManifest文件,最后打包时会将这些文件合并成一个文件,所以会出现application标签中的属性重复问题,要在app的AndroidManifest文件中添加如下两行代码:

    //加在manifest标签里
    xmlns:tools="http://schemas.android.com/tools" 
    
    //加在application标签里
    tools:replace="android:name,android:label,android:icon, android:theme,android:allowBackup"
    

    这里的namelabeliconthemeallowBackup都可能会有重复,所以全部写上之间用逗号隔开。 完整AndroidManifest如下:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.myapplication"
        xmlns:tools="http://schemas.android.com/tools">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme"
            tools:replace="android:name,android:label,android:icon, android:theme,android:allowBackup">
    
        </application>
    
    </manifest>
    

    接着将app目录下的build.gradle内容复制到mainmodule下的build.gradle里面,然后将app下的res资源目录及文件拷贝到mainmodule的res目录下。

    需要在project下的自定义的gradle文件里加入一个判断是模块还是应用的boolean值,如本项目在fjs.gradle里添加一个布尔类型的isModule值

    ext{
        isModule = false //true:作为Lib组件存在, false:作为application存在
        android = [
                compileSdkVersion :28,
                buildToolsVersion :"29.0.0",
                minSdkVersion :18,
                targetSdkVersion :28,
                versionCode :1,
                versionName :"1.0"//必须是int或者float,否则影响线上升级
        ]
    
        version = [
                androidSupportSdkVersion:"28.0.0",
                constraintLayoutVersion:"1.1.3",
                rxJavaVersion:"2.0.1",
                junitVersion:"4.12",
                runnerVersion:"1.0.2",
                espressoCoreVersion:"3.0.2",
        ]
    
        dependencies = [
                "appcompat-v7":"com.android.support:appcompat-v7:${version["androidSupportSdkVersion"]}",
                "constraint-layout":"com.android.support.constraint:constraint-layout:${version["constraintLayoutVersion"]}",
                "rxjava":"io.reactivex.rxjava2:rxjava:${version["rxJavaVersion"]}",
                "junit":"junit:junit:${version["junitVersion"]}",
                "runner":"com.android.support.test:runner:${version["runnerVersion"]}",
                "espresso-core":"com.android.support.test.espresso:espresso-core:${version["espressoCoreVersion"]}"
        ]
    }
    
    • 在mainmodule里的build.gradle里添加一个判断,如下所示:

    1565704209493.png

    • 然后在app的build.gradle里面的dependencies里添加如下内容:
        if (rootProject.ext.isModule){
            implementation project(":mainmodule")
        }
    
    • 在app和其它模块里分别新建一个Application,并在各自的模块里的AndroidManifest.xml文件里的application标签下引入新建的Application。
    • 然后同步即可。

    源码:https://github.com/Yedongsheng/Jianshu/tree/develop

    展开全文
  • 前言先用dumpdecrypted工具先对加过密的ipa包进行砸,然后再用class-dump工具导出它的头文件。砸的步骤:1、找到app二进制文件对应的目录; 2、找到app document对应的目录; 3、将砸工具dumpdecrypt....

    前言

    原文

    https://kunnan.blog.csdn.net/article/details/77981823

    • 加壳

    利用特殊的算法,改变EXE可执行程序或者DLL动态连接库文件的编码(比如实现压缩、加密),以达到缩小文件体积或者加密程序编码,甚至是躲过杀毒软件查杀的目的。目前较常用的壳有UPX、ASPack、PePack、PECompact和UPack等。

    • 砸壳原理

    其中用到的砸壳工具就是dumpdecrypted,其原理是让app预先加载一个解密的dumpdecrypted.dylib,然后在程序运行后,将代码动态解密,最后在内存中dump出来整个程序。

    iPhone:~ root# DYLD_INSERT_LIBRARIES=/var/mobile/Containers/Data/Application/3A5D7F67-04E8-49CF-93CF-5019B11146D6/Documents/dumpdecrypted.dylib  /var/mobile/Containers/Bundle/Application/01ECB9D1-858D-4BC6-90CE-922942460859/WeChat.app/WeChat
    
    

    先用dumpdecrypted工具先对加过密的ipa包进行砸壳,然后再用class-dump工具去导出它的头文件。

    • 砸壳的步骤:

    1、找到app二进制文件对应的目录;
    2、找到app document对应的目录;
    3、将砸壳工具dumpdecrypt.dylib拷贝到ducument目录下; //目的是为了获取写的权限
    4、砸壳;
    利用环境变量 DYLD_INSERT_LIBRARY 来添加动态库dumpdecrypted.dylib
    接下来要正式的dump可执行文件。

    I、砸壳的准备工作

    http://blog.csdn.net/z929118967/article/details/77980812

     ssh 'root@192.168.2.212'
    
    
    Host   : hostName的别名
    HostName: 是目标主机的主机名,也就是平时我们使用ssh后面跟的地址名称。
    Port:指定的端口号。
    User:指定的登陆用户名。
    IdentifyFile:指定的私钥地址。
    
    

    ————————————————
    版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/z929118967/article/details/78234772
    在这里插入图片描述

    1.1、查找二进制文件对应的目录


    iPhone:~ root# ps -e |grep WeChat
      405 ??         0:01.72 /var/mobile/Containers/Bundle/Application/E2B26C47-B989-492B-995C-47EFFA94DAB3/WeChat.app/WeChat
    36068 ttys000    0:00.00 grep WeChat
    

    或者

    iPhone:~ root#  ps -e | grep /var/mobile
     7691 ??        13:22.82 /var/mobile/Containers/Bundle/Application/01ECB9D1-858D-4BC6-90CE-922942460859/WeChat.app/WeChat
     7836 ttys000    0:00.01 grep /var/mobile
    

    因为从AppStore中下载安装的应用都会位于/var/mobile/…Applications中,

    1.2、查找app document对应的目录

    使用Cycript注入目标进程中

    iPhone:~ root# cycript -p WeChat
    cy# NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]
    @"/var/mobile/Containers/Data/Application/91E7D6CF-A3D3-435B-849D-31BB53ED185B/Documents"
    

    或者使用:

    iPhone:~ root# cycript -p WeChat
    cy# [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
    #"file:///var/mobile/Containers/Data/Application/3A5D7F67-04E8-49CF-93CF-5019B11146D6/Documents/"
    

    1.3、dumpdecrypted

    • dumpdecrypted.dylib 的获取

    dumpdecrypted

    devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ ls
    Makefile	README		dumpdecrypted.c
    devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ make
    `xcrun --sdk iphoneos --find gcc` -Os  -Wimplicit -isysroot `xcrun --sdk iphoneos --show-sdk-path` -F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/Frameworks -F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -c -o dumpdecrypted.o dumpdecrypted.c 
    `xcrun --sdk iphoneos --find gcc` -Os  -Wimplicit -isysroot `xcrun --sdk iphoneos --show-sdk-path` -F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/Frameworks -F`xcrun --sdk iphoneos --show-sdk-path`/System/Library/PrivateFrameworks -arch armv7 -arch armv7s -arch arm64 -dynamiclib -o dumpdecrypted.dylib dumpdecrypted.o
    devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ ls -a
    .			README			dumpdecrypted.o
    ..			dumpdecrypted.c
    Makefile		dumpdecrypted.dylib
    

    使用SCP 拷贝文件到iOS设备对应的目录

    devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ scp ./dumpdecrypted.dylib root@192.168.2.212://var/mobile/Containers/Data/Application/91E7D6CF-A3D3-435B-849D-31BB53ED185B/Documents
    root@192.168.2.212's password: 
    dumpdecrypted.dylib                                                                                                                                    100%  193KB  64.0KB/s   00:03    
    devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ 
    

    II、砸壳

    • 利用环境变量 DYLD_INSERT_LIBRARY 来添加动态库dumpdecrypted.dylib
    DYLD_INSERT_LIBRARIES=/PathFrom/dumpdecrypted.dylib /PathTo
    
    

    第一个path为dylib,目标path 为app二进制文件对应的目录

    iPhone:~/Documents root# DYLD_INSERT_LIBRARIES=/var/mobile/Containers/Data/Application/91E7D6CF-A3D3-435B-849D-31BB53ED185B/Documents/dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/E2B26C47-B989-492B-995C-47EFFA94DAB3/WeChat.app/WeChat
    mach-o decryption dumper
    
    DISCLAIMER: This tool is only meant for security research purposes, not for application crackers.
    
    [+] detected 64bit ARM binary in memory.
    [+] offset to cryptid found: @0x100030ca8(from 0x100030000) = ca8
    [+] Found encrypted data at address 00004000 of length 56770560 bytes - type 1.
    [+] Opening /private/var/mobile/Containers/Bundle/Application/E2B26C47-B989-492B-995C-47EFFA94DAB3/WeChat.app/WeChat for reading.
    [+] Reading header
    [+] Detecting header type
    [+] Executable is a FAT image - searching for right architecture
    [+] Correct arch is at offset 62078976 in the file
    [+] Opening WeChat.decrypted for writing.
    [+] Copying the not encrypted start of the file
    [+] Dumping the decrypted data into the file
    [+] Copying the not encrypted remainder of the file
    [+] Setting the LC_ENCRYPTION_INFO->cryptid to 0 at offset 3b34ca8
    [+] Closing original file
    [+] Closing dump file
    iPhone:~/Documents root# ls -a
    .  ..  WeChat.decrypted  baiduplist  cfg  vmp
    

    当前目录下会生成砸壳后的文件,即WeChat.decrypted

    III、用scp命令把WeChat.decrypted文件拷贝到mac

    • 用scp命令把WeChat.decrypted文件拷贝到电脑上,接下来我们要正式的dump、Hopper微信的可执行文件
    devzkndeMacBook-Pro:dumpdecrypted-master devzkn$ scp root@192.168.2.212:/var/root/Documents/WeChat.decrypted  /Users/devzkn/Downloads/dumpdecrypted-master
    root@192.168.2.212's password: 
    WeChat.decrypted                                                                                                                                                                  10%   13MB   1.5MB/s   01:17 ETA^WeChat.decrypted                                                                                                                                             WeChat.decrypted  WeChat.dWeChat.decrypted                                                                                                                                                    52%   67MB   1.2MB/s   00:52 ETA
    
    

    如果没找到文件,就继续执行一次

    DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/01ECB9D1-858D-4BC6-90CE-922942460859/WeChat.app/WeChat
    
    

    IV 、如果遇到做了越狱检测的APP,那么该怎么办?

    (现在最流行的frida动态砸壳方法及本文的dumpdecrypted包括Clutch都行不通了)

    方案:可使用LLDB脱壳工具git clone https://github.com/4ch12dy/xia0LLDB.git

    It highly recommend you to install issh/Tap2debug
    bypass anti-debug: can hook ptrace and inlinehook svc to kill anti debug. it is so strong ever!!!
    dump macho image in lldb, default dump all macho image.
    后台模式启动并砸壳: if app crash at launch like detect jailbreak, you should use -x backboard launch app, and just input dumpdecrypted -X see more: http://4ch12dy.site/2020/02/26/lldb-how-to-dump-gracefully/lldb-how-to-dump-gracefully/

    debugserver -x backboard 127.0.0.1:2345 /var/containers/Bundle/Application/XXXXX
    lldb
    process connect connect://localhost:2345
    dumpdecrypted -X
    
    

    see also: 内存数据的在iOS逆向与安全中的应用

    1、病毒查杀对抗:需要获取查杀对象的内存数据进行和病毒库的特征做比对。
    2、应用安全对抗:需要保护自身的内存数据不被转存。
    3、静态逆向应用:遇到应用程序加密保护时,IDA就歇菜了,此时获取解密后内存数据就非常重要。dumpdecrypted 就是在程序运行后,让系统将代码动态解密之后,在内存中dump出来整个程序
    4、动态逆向应用:用ollydbg/cycript进行动态调试应用主要还是调试运行时释放的内存数据。

    喜欢游戏安全的朋友,可以关注公众号:小道安全

    展开全文
  • 超级直播空壳版,可以制作自己的直播app。导入方法同之前一样,新的界面测试并不太好用。以下是作者提示修改内容:去除当贝模块去除友盟模块去除安卓V4包不升级无万象添加自开发电视管理,端口为22222...
  • 从事渗透这个行业,我相信百分之九十的人都是安服仔,安服仔就是要什么都懂一点点但是又不精通,碰到了困难也没办法从底层的原理解决,但是为了能在这个社会混上一口饭,安服仔永远都是那种最拼命的人,那种干劲是...
  • 反编译之脱乐固加固的

    千次阅读 2018-11-23 15:46:16
      最近遇到一款app需要开通Vip才能进行视频下载,像我这种贫穷的程序员怎么能忍,既然没钱解决问题那就用技术解决吧!果断开始反编译,但反编译之后的文件却是下面这样的 额,这明显是经过加固后的文件,将真正的...
  • 谈一谈Web App和Native App的优势和劣势

    千次阅读 2018-02-08 13:57:41
    对于第一次想要做APP的客户来说,如何做APP是一件头疼的事情,我想做APP,但是又不知道APP开发是个怎样的事情,下面就让创息软件的小编为您细细道来:在不就的将来,APP的生态链到底是Web App(所谓的套壳App)主...
  • iOS逆向之Clutch砸

    千次阅读 2016-04-23 21:36:30
    上传到Store的App,都已经被Apple加过密了,所以无法使用静态反编译工具如IDA或者Hopper对其做逆向分析,这时就要祭出Clunch对App先做去壳处理。
  • Android App脱壳

    2020-10-29 15:56:16
    利用drizzleDumper去壳 工具下载链接 参看文章https://www.jianshu.com/p/e2850b03a1fd?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 下载链接 链接: ...
  • 1.首先要花生壳官网下载软件并安装https://hsk.oray.com/ 2.注册账号...3.打开pc版花生壳app并按操作登录 4.登陆后点击图中红色部分 5.你会跳到一个页面点击图...
  • 某启xb app爬虫

    2020-12-31 15:59:52
    结果也是加了密的,那么反编译下app看看,用dexdump去掉后。 在app中搜索请求网址:advanceSearch2,可以直接定位到关键点 可以直接看出token是AES/cbc加密的,其中keyword是搜索关键字 o通过hook可以得知是...
  • 手机app的四种开发方式

    千次阅读 2020-12-16 19:40:47
    一些良知太坏了的开发商运用项目公司不懂得技能,把这种5分钟速成的东西,当作原生态开发的APP去忽悠创业者。把一个APP卖几千到几万的价格。创业者还自以为捡了廉价。由于,他们询价的时候根本不会想到还会有这个...
  • APP 进行查脱壳反编译等操作。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何学习更加高深的知识。 那么针对这三...
  • 目前我们需要做查,具体方法可以百度搜索,企查查用的360加固,很简单,我脱壳一下。 脱完,我们需要逆向dex,如何逆向呢???我们可以借助jeb工具,具体用法百度一下,我这里用的是手机端反逆向。 逆向之后...
  • 目前我们需要做查,具体方法可以百度搜索,企查查用的360加固,很简单,我脱壳一下。 脱完,我们需要逆向dex,如何逆向呢???我们可以借助jeb工具,具体用法百度一下,我这里用的是手机端反逆向。 逆向之后...
  • 何为1,2代 ...yang的是app在启动时,找到的hook点脱壳的 3.hluwa dexDump原理分析,执行顺序 1.找到内存里有 “64 65 78 0a 30 ?? ?? 00"的文件 2.循环遍历,再验证这个dex是不是我们的dex文件 3.验证
  • iOS逆向----使用Clutch手动进行砸

    千次阅读 2018-11-15 15:26:40
    最近在进行某个APP的逆向,发现原来一直用的很稳定的AloneMonkey猴子大神的一键砸工具总是卡在dump framework上,也没有确定是什么原因,无奈之下只好手动砸了。。 这次砸没有选择很老的dumpdecrypted,毕竟...
  • 公司要开发一个App,为了便于维护和更新,而不用每次苹果审核,采用的是混合开发方式:用WebVie+WebApp的方式。 因为本人不会Java和ObjectC,公司又不想花钱招这两个岗位的人,因此我来顶上,采用Xamarin+C#。 ...
  • 目前的手机APP有三类:原生APP,WebAPP,HybridApp。 HybridApp ... Apache Cordova ...应用在每个平台的具体执行被封装了起来,并依靠符合标准的API绑定访问每个设备的功能,比如说:传感器、数
  • 背景 当你测试App的时候,想要通过Fiddler/Charles等工具抓包看下https...你可能开始找证书的问题:是不是Fiddler/Charles的证书没有导入的手机中?配置一遍又一遍,又开始对比web端浏览器的https发现没问题。这...
  • 大部分APP其实只是web加个) 准备工作: 1、Python+Pycharm社区版(社区版免费而且够用,不需要破解专业版) 2、fiddler抓包工具 3、一部root的安卓机,或者模拟器 Github地址:https:..
  • 第二部分就是埋点,在APP、web端上报的经纪人作业情况和C端用户的行为,这部分通过前端的埋点技术上报。第三部分就是业务的数据,业务用kafka做消息队列产生的实时数据。1、流式计算平台平台目前主要建设Spark...
  • 合作方:你们的jar,没有页面,需要时间开发,给我一个直接能用的。程序员:你有钱,你说什么都对。这个需求首先让我想到的就是换,直接把这整个项目打包aar。在合作方公司App里面直接引入,启动APP时直接加载aar...
  • 测试-源码

    2021-02-12 13:24:39
    测试 ...容器 docker-compose exec go-dev sh 运行应用 运行主应用 转到容器环境外壳 go run app 运行测试 go test app... 生成可执行文件 注意:为了简单起见,它尚未与参数一起运行。 go build
  • (2014-4-23)网络牛人Kendiv脱了360奇虎的“加固保”的(脱壳器下载地址:http://vdisk.weibo.com/s/dhs5LV9q4FsZ/1398255331)。  发现了对微信App攻击的可疑代码:
  • 做 无限滚动页面显示栅格 服务错误处理 生产配置 请求网址的元数据(调色板等) zmq worker +限制phantomjs并发 逃脱参数 相对created_at显示 方面 漆 执照 (MIT许可证) 版权所有(c)2011 TJ Holowaychuk &...
  • 本人第一次接触H5 app,一上来就要实现这个功能,就是一脸的黑人问号,只能老办法,找度娘~。网上一搜,果然有很多种方法呀。本人用的是壳子是“cordova”,因此用这种方法是ok的:需引入“cordova.js”window....

空空如也

空空如也

1 2 3 4 5 6
收藏数 111
精华内容 44
关键字:

去壳app