- 博客(1286)
- 资源 (124)
- 收藏
- 关注
原创 wireshark抓取Chrome浏览器quic协议的明文包
3.配置wireshark,编辑->首选项->Protocls->TLS:(Pre)-Master-Secret log filename,填入D:\sslkeylogfile.log。wireshark版本:Version 4.2.5 (v4.2.5-0-g4aa814ac25a1).1.chromium浏览器启用quic: chrome://flags/#enable-quic。4.有代理的话,关掉HTTP代理,重启浏览器,进行抓包。
2024-07-03 17:13:48
813
转载 快速的检出chromium某tag可编译完整代码
的时候,是会根据git的提交日志来创建当前的版本信息。而深度为1的时候,就失去了需要的日志内容。当然,这样也会不导致编译失败,但是在浏览器内就无法看到构建的版本信息了。命令的研究之后,终于再总结出一个最快速的从零开始,直接check出指定的tag代码的方法。旧的方法完全可以淘汰了。并且深度只有2,所以原本需要同步的30+G的数据,变成只有区区1+G。而这个更新过程,同步的数据也非常小,非常快捷。到这里,还跟之前的方法相差不多。同时,在这份源码的基础上,同样可以继续更新后续的代码。这个步骤,代替了原来的。
2024-07-01 10:02:35
238
转载 如何创建一个可执行的 Linux 共享库
如何让共享库文件也可以直接执行如何在可执行文件中用dlopen解析自身的函数这两个需求汇总起来,可以大体理解为如何让一个程序既可以作为共享库,又能够直接运行。这类需求在 Linux 下面其实很常见,比如 ld-linux.so 和 libc.so:那如何做到的呢?
2024-04-08 19:05:13
268
原创 增量压缩工具Xdelta3源码解析——工具使用
开源地址:http://xdelta.org/相关的文章:https://blog.youkuaiyun.com/dj_macros/category_11189227.html
2024-01-02 15:13:05
806
转载 DroidPlugin代码分析
https://blog.youkuaiyun.com/turkeycock/category_6723603.html
2023-02-22 11:44:54
520
转载 Android插件化原理解析——概要
就拿Activity生命周期的管理来说,DL的代理方式就像是牵线木偶,插件只不过是操纵傀儡而已;而DroidPlugin则是借尸还魂,插件是有血有肉的系统管理的真正组件;有的方案选择独立资源,不同插件管理自己的资源。类的加载可以使用Java的ClassLoader机制,但是对于Android来说,并不是说类加载进来就可以用了,很多组件都是有“生命”的;因此对于这些有血有肉的类,必须给它们注入活力,也就是所谓的。接下来的一系列文章将以DroidPlugin为例讲解插件框架的原理,揭开插件化的神秘面纱;
2023-02-15 10:56:13
490
转载 Linux 硬链接与软链接
1).删除符号连接f3,对f1,f2无影响;2).删除硬连接f2,对f1,f3也无影响;3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。
2022-12-21 11:55:59
1591
转载 JNI内存泄露JNI ERROR (app bug): local reference table overflow (max=512)
native method 调用 DeleteLocalRef() 释放某个 JNI Local Reference 时,首先通过线程堆栈中的记录着 Local Reference 表的内存位置的指针定位相应的 Local Reference 在 Local Ref 表中的位置,然后从 Local Ref 表中删除该 Local Reference,也就取消了对相应 Java 对象的引用(Ref count 减 1)。4.GetByteArrayElements和GetStringUTFChars。
2022-12-13 19:03:49
1186
原创 【无标题】加固替换Application学习笔记
会生成一个 Context。// LoadedApk------->mApplication ContextImpl的mPackageInfo属性。// ContextImpl---->mOuterContext(app) 通过Application的attachBaseContext回调参数获取。// 如果没有调用到该方法 , 说明该应用中没有配置 ContentProvider;
2022-12-01 11:30:46
648
转载 ART深入浅出6--了解Dex文件格式(3)
hander_off_ 是 hander结构的偏移,这个偏移是从codeItem.insns_ + sizeof(TryItem ) * codeItem.tries_size_ 开始的。finally块是放在最后的,而且finally只有address_值,没有type_idx_的值。ins_size_是指令的大小,单位是2字节。handler结构是一个不定长的结构,在TryItem数组之后有一个handler_size的leb128编码的数据,表示handler的结构。ins_size_是参数的个数。
2022-11-24 11:40:21
547
转载 通过Class.newInstance()和Constructor.newInstance()两种反射方法创建对象的异同
Constructor.newInstance() → Inside java.lang.reflect 包。Class.newInstance()对于捕获或者未捕获的异常均由构造器抛出;Class.newInstance()需要构造器可见(visible);Constructor.newInstance()可以反任何构造器;Constructor.newInstance()可以反私有构造器;Class.newInstance()只能反射无参的构造器;直接类名反射实例化对象。
2022-11-23 15:15:57
817
转载 Android JNI 调用时的异常处理
异常我们已经很熟悉了,空指针、数组越界等等,在Java中,当抛出一个异常,虚拟机会停止执行代码块并进入调用栈反向检查能处理特定异常的异常处理程序代码块,虚拟机清除异常并将控制权交给异常处理程序。而JNI不同,JNI没有像Java一样有try…catch…final这样的异常处理机制,面且在本地代码中调用某个JNI接口时如果发生了异常,后续的本地代码不会立即停止执行,而会继续往下执行后面的代码,这就要求开发人员在异常发生后显式地实现异常处理。
2022-11-08 16:23:33
582
转载 访问数组(JNI)
如果你没有一个预先分配的 C 缓冲区,并且原始数组长度未定,而本地代码又不想在获取数组元素的指针时阻塞的话,使用 Get/ReleasePrimitiveArrayCritical 函数对。对于少量的、固定大小的数组,Get/SetArrayRegion是最好的选择,因为C缓冲区可以在Stack(栈)上被很快地分配,而且复制少量数组元素的代价是很小的。JNI支持一系列的Get/ReleaseArrayElements 函数,这些函数允许本地代码获取一个指向基本类型数组的元素的指针。
2022-11-08 14:14:24
650
转载 竟然有如此好用的读Android源码利器
最后,如果你之前不了解这个网站,或者之前了解过一些其他类似的网站。推荐一个可以在线搜索Android源代码的网站cs.android.com。它是由Google开发的一款可帮助开发者查看实际使用的 Android 源代码的工具。我们通过历史记录可以很了解到为什么Google引入这个机制,以及它能干什么。通过学习google大神的修改记录,我们也能得到很大的提升。我们可以看到在ViewRootImpl.java 的scheduleTraversals()方法中调用了postSyncBarrier()方法。
2022-11-07 14:22:36
961
转载 Android NDK 开发中正确释放 JNI 对象
如果在 C++ 创建子线程,通过 AttachCurrentThread 获取到 JNIEnv,调用 FindClass 是会报错的,通常而言,如果需要 FindClass ,尽量在 JNI_OnLoad 去创建一个全局的变量。而 GetStringRegion 和 GetByteArrayRegion 是我们自己分配好内存,然后把指针传给jni,jni往指针写入数据,所以不需要jni去释放内存,但是我们自己分配的空间不需要使用后必须释放。错误❌:不能在 Release 之后使用,会导致野指针。
2022-11-01 11:44:52
1376
转载 入门ART虚拟机(3)——加载类和方法
在DexFile_defineClassNative方法中,调用class_linker对象的DefineClass来加载类。在DexPathList类的findClass方法中,遍历dexElements数组的每一个成员(前面笔记提到过,每一个Element对象里面封装着一个DexFile),然后调用DexFile的loadClassBinaryName方法来加载类。调用FindOatClass查找与被加载类对应的OatClass,然后调用LoadClassMembers加载类的成员。
2022-10-17 11:38:13
358
转载 入门ART虚拟机(2)——加载DEX文件续
现在假设正在加载的DEX,是一个被加固程序处理过的DEX,并且DEX壳代码HOOK execv函数,阻止了OAT文件的生成。因为是第一次加载该DEX,所以返回kDex2OatNeeded,MakeUpToDate将会调用GenerateOatFile为DEX生成对应的OAT文件。继续看openDexFilesFromOat,这里假设该DEX是第一次被加载,系统中不存在对应的OAT文件。因为没有对应的OAT文件,所以最终会调用DexFile::Open方法来直接加载原始的DEX文件。
2022-10-12 10:51:41
833
转载 入门ART虚拟机(1)——加载DEX文件
下一篇笔记再继续看DexFile_openDexFileNative源码,预留一个问题:假设要动态加载DEX文件,一些核心class的方法指令被抽走加密或虚拟化,在运行时再还原或解释执行。DexFile_openDexFileNative在加载DEX时,会有一个dex2opt的过程,通常壳代码会HOOK execv函数,阻止dex2opt对指定DEX文件的优化,那么这会对DexFile_openDexFileNative的执行产生哪些影响?loadDexFile是DexPathList的一个静态成员方法。
2022-10-12 10:12:08
723
转载 【Android 逆向】加壳技术识别 ( VMP 加壳示例 | Dex2C 加壳示例 )
加壳技术识别的必要性 : 拿到 APK 文件后 , 如果想要分析其 DEX 文件 , 需要先 识别出该 APK 是使用的什么技术进行的加壳 , 如果该 APK 只是使用了整体保护 , 只需要将内存中的 DEX 文件 DUMP 下来即可;每个加壳的应用必然使用 DEX 整体加固 , 然后在该基础上 , 使用 函数抽取 , VMP , Dex2C 中的一种加壳技术 , 也有可能使用 3 33 者中的多种加壳技术 , 进行混合加壳;函数抽取特征 : 获取到加壳后的 DEX 文件 , 其函数体是无效的;
2022-09-22 17:41:39
2255
转载 一个易上手的函数抽取样本还原(JAVA遍历类与加载SO的思路,还有LoadMethod阶段去获取完整Dex)
那么其实这道题考察的就是classloader的运用,无论壳如何变,为了能让上层应用能正常运用,必然逃不脱整个安卓框架层,那么既然框架层也是用的classloader去加载类的,那么就逃不脱classloader这个知识点。由题目其实可以很清楚的了解到,这个函数抽取壳,类被还原后就不会复原回去,那么解题思路就很明确了,只要遍历所有的类,再把Dex dump出来,即脱壳成功。这这个方法中,我们可以拿到DexFile,然后进而可以拿到base和size,然后拿到这两个后,我们就可以dump dex出来了。
2022-09-22 16:04:06
817
转载 Python-高阶函数
比如:现在有一个字典{'小红':20,'小明':18,'小鱼':19,'小雪':22,'小东':17},现在按照年龄排序。比如将 list1=[1, 3, 5, 'a', 'b', 'c', 7, 'u', 'y']中的整型数字筛选出来。上面的案例中 key 就使用了匿名函数进行排序条件的制定,即 lambda 的返回值是就是排序条件,默认是升序。再或者求列表中数字的偶数[1, 2, 4, 5, 8, 9, 0, 7]比如:求列表中的每个元素的平方值,list1 = [1,2,3,4]
2022-09-15 23:29:36
168
转载 Python-集合
集合A 是{1、2、3 },集合B 是 {2、3、4 } . 交叉补集就只保留 1 和 4。因为 1 是 A 独有的, 4 是B 独有的。跟数学中的交集是一样的,就是求两个集合中共同都有的元素。有元素的集合:set1 ={'足球','篮球','网球','乒乓球','排球' }discard(): 与remove()类似,如果是不存在的元素不会报错。{'冰球', '篮球', '网球', '足球', '排球', '乒乓球'}{'篮球', '乒乓球', '网球'}{'冰球', '足球', '排球'}
2022-09-15 22:09:54
324
转载 scrapy入门实战-爬取代理网站
2. 目录中spiders放置的是爬虫文件,然后middlewares.py是中间件,有下载器的中间件,有爬虫文件的中间件。pipelines.py是管道文件,是对spider爬虫文件解析数据的处理。settings.py是设置相关属性,是否遵守爬虫的robotstxt协议,设置User-Agent等。需要安装一个xpath helper插件在浏览器中,可以帮助验证书写的xpath是否正确。4.学会使用scrapy的基础命令,创建项目,使用模板生成一个爬虫文件spider;如设置user-agent;
2022-09-11 22:11:29
448
转载 java -Xbootclasspath/a:命令参数简述
当用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,你会发现如何设置-classpath参数应用程序都找不到相应的第三方类,报ClassNotFound错误。实际上这是由于当使用-jar参数运行的时候,java VM会屏蔽所有的外部classpath,而只以本身yourJarExe.jar的内部class作为类的寻找范围。解决方案一 BootStrap class扩展方案Java 命令行提供了如何扩展bootStrap 级别class的简单方法.-Xbootclassp
2022-09-06 22:51:18
1385
转载 Python 获取浏览器中存储的用户名和密码
只能调取真正存放用户名、密码、网址的数据库,Chrome浏览器已保存的密码都保存在一个sqlite3数据库文件中,和Cookies数据库在同一个文件夹。下面截图为我的存储位置,里面存储的信息跟我们在浏览器设置-》密码中看到的一样。版权声明:本文为优快云博主「易有太极、是生两仪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。使用微软自带的 CryptUnprotectData 函数解密数据库中的密码字段,即可还原密码。第三步,展开查看:我截图的账号密码都擦除了,保密。
2022-08-19 17:19:12
1559
转载 一文带你详细介绍c++中的std::move函数
将vectorB赋值给另一个vectorA,如果是拷贝赋值,那么显然要对B中的每一个元素执行一个copy操作到A,如果是移动赋值的话,只需要将指向B的指针拷贝到A中即可,试想一下如果vector中有相当多的元素,那是不是用move来代替copy就显得十分高效了呢?上述例子中,由于在之前已经对变量val进行了定义,故在栈上会给val分配内存地址,运算符=要求等号左边是可修改的左值,4是临时参与运算的值,一般在寄存器上暂存,运算结束后在寄存器上移除该值,故①是对的,②是错的。.........
2022-07-29 11:15:14
12579
4
转载 二叉树的非递归遍历(树的深度优先遍历(根左右..)树的广度优先遍历(层次遍历))
二叉树的前序、中序、后序遍历我想大家应该都很熟悉了,那我们今天就来讲一下二叉树的层次遍历。
2022-07-18 10:15:53
659
转载 Android onLayout()
Called from layout when this view should assign a size and position to each of its children onLayout()方法的注释就是安排自己的子View的位置,我们继承View的时候好像很少用到这个玩意。因为只是写一个控件根本不会存在子View的问题。 接手别人的代码有个FlowLayout,搜索的时候出现历史记录的类似的View,但是换行的时候会出现问题。所以觉得可以自己搞个试试。 ...
2022-04-18 23:39:44
861
转载 Android可持续滑动布局:ConsecutiveScrollerLayout
下面给出ConsecutiveScrollerLayout到项目地址,如果你喜欢我的作品,或者这个布局对你有所帮助,请给我点个star呗!https://github.com/donkingliang/ConsecutiveScroller————————————————版权声明:本文为优快云博主「DonKingLiang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/u010177022/article/
2022-04-03 11:23:29
622
原创 NestedScrollView 嵌套RecyclerView 分页加载无效(一次性加载)
<android.support.v4.widget.NestedScrollViewandroid:id="@+id/nested_scroll_view"android:layout_width="match_parent"android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/rv" android.
2022-04-02 16:41:21
1569
2
转载 Android自定义改变字体的进度条
GitHub - YangShaoXiong/RangeBar: 灵感来自于查看微信公众账号所发的文章,设置该文章字体大小时所需要的View控件。Android自定义改变字体的进度条_vivianluomin的博客-优快云博客最近做简单的富文本的项目,需要动态改变字体的大小,我是写在pupoWindow中的,先看效果:思路:其实思路很简单,就是花7条竖着的线和6条横着的线,然后画一个thumb,根据手指的位置,进行thumb位置的改变。话不多说,直接上代码,基本注释都给了:..
2022-03-28 13:56:02
425
转载 优秀学员作品:《FartExt之优化更深主动调用的FART10》
参考将FART和Youpk结合来做一次针对函数抽取壳的全面提升看雪高研班课程寒冰大佬的FART带动了不少新的主动调用思想的抽取壳方案。看了上面这篇文章,感觉意犹未尽,当然是要动手实践一翻来优化一波。于是我重新翻阅FART和Youpk的源码,我准备和那位大佬一样,参考Youpk在FART的基础上进行升级改造。开工前先明确出我的需求。<!--more-->需求对指定进程脱壳,非目标进程不要执行脱壳线程。 对指定类列表进行脱壳 将FART升级到aosp10实现。
2022-03-23 23:34:52
1605
转载 Android开发折叠列表BaseNodeAdapter的使用
Android项目开发过程中,经常会有多级列表的需求,今天分享一下简单好用的BaseNodeAdapter,利用此适配器可实现效果先看一下最终效果将此适配器集成至项目1.在项目的根目录的build.gradle文件中配置远程仓库allprojects { repositories { ... maven { url "https://jitpack.io" } }}2.在需要使用该功能的module中添加依赖,版本号可用(3.0.4)...
2022-03-18 10:13:03
3281
1
转载 Android 圆角边框RoundRect原理
绘制圆角矩形的方法/** * Draw the specified round-rect using the specified paint. The roundrect will be filled or * framed based on the Style in the paint. * * @param rect The rectangular bounds of the roundRect to be drawn * @param rx T...
2022-03-08 09:35:47
5138
转载 Android 上一个优雅、万能自定义 UI、性能高效的日历控件--calendarview
项目地址:huanghaibin-dev/CalendarView简介: Android 上一个优雅、万能自定义 UI、性能高效的日历控件,热插拔!热插拔!热插拔!重要的事说三遍,支持热插拔实现的 UI 定制!支持标记、自定义颜色、农历等。Canvas 绘制,速度快、占用内存低温馨提醒 Warm tipsGithub 代码全部开源无限制使用,免费开源最终版本为 3.7.1,垂直、水平切换日历、高仿 iOS 日历等源码不再开源。The final version of the free an.
2022-03-07 10:33:13
598
原创 ConstraintLayout--控件边界重叠的解决思路
例如水平向右的两控件,左边的控件要覆盖一部分到右边控件。<androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/two_situation_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="ce.
2022-03-03 16:20:34
1927
转载 Android 代码动态布局 LayoutParams 使用
先来看一个简单的布局,先用xml写<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@and
2022-03-02 15:19:10
3475
charlesv3.11.2(win32)及破解补丁
2015-12-30
charlesv3.11.2(Mac)及破解补丁
2015-12-30
charlesv3.11.2(win64)及破解补丁
2015-12-30
IPA的砸壳工具-dumpdecrypted源代码及二进制
2015-12-24
HttpAnalyzer V7.5.3.455 汉化特别版
2015-12-09
jeb-1.5.201404100_modified_by_scz(20140711)
2015-10-15
iPhoneConfigUtility.dmg及APN修改办法.docx
2015-09-06
Android dex文件通用自动脱壳器
2015-09-02
iPhone转发工具usbmuxd
2015-08-17
以Ad_Hoc方式打包iOS应用程序
2015-07-21
IOS_Reverse_Tools
2015-07-10
plist Editor Pro v2.0破解版
2015-07-09
【IOS应用逆向工程:分析与实战】沙梓社.pdf
2015-06-25
Android手机一键Root原理分析pdf及部分相关源码
2015-06-23
Xshell5安全终端模拟软件
2015-06-01
simplify-1.2.1.zip
2019-08-09
Xposed__给微信加个按钮样例
2017-12-19
一个基于xposed和inline hook的一代壳脱壳工具
2017-07-03
爱加密加固之后恢复原始的log的附件
2017-04-18
WebViewJSInteractDemo
2016-10-13
charles_4_0_1_mac_crack
2016-10-09
charles_4_0_1_x64_crack
2016-10-09
charles_4_0_1_x32_crack
2016-10-09
Hopper Disassembler v3 3.9.15和谐版
2016-08-22
setpropex工具
2016-07-05
ndk的一些有用的库
2016-05-19
Vc6DebugDll
2016-05-03
iphone4(ios7.1.2),逆向工具deb离线包
2016-04-24
dx编译Hello.java的总结的相关文件
2016-04-07
win7系统下的vc6调试无法中止的解决方案
2016-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人