![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程技术
文章平均质量分 87
463666991
这个作者很懒,什么都没留下…
展开
-
记录一次某app的sign分析过程(篇章一)新手推荐
今天我们分析case2里面的加密函数,也是最简单的,后面我会分析剩下两个算法的计算方法。定位到要分析的函数,由于位数疑似md5,所以使用龙哥的findhash插件,进行寻找。发现在此处进行引用,从函数功能可以分析出,这是在组包,并返回组装完的字符串。发现调用位置就在我们目标分析的函数里(如果没跟到的小伙伴可以打印堆栈)熟悉的朋友应该认出了,这个就是md5运算部分,我们寻找上层引用。算法肉眼可见的可以复现,所以我们进行hook入参和出参进行分析。至此,我们已经完成了最容易的一个分支的京东sign的计算。原创 2024-07-30 17:45:55 · 807 阅读 · 0 评论 -
移植Youpk到Aosp10上
Youpk是一个很强大的框架,他的模块化组织形式非常新颖,但是随着安卓系统的不断更新,移植难度也非常大,由于使用了大量的api,导致移植有一定的难度,与fart相比,模块化的插桩更加优雅。已经有大佬做了fart10的移植(见参考文章3),我这里就不和他重复了,来尝试下youpk的移植,并去除特征指纹。测试设备:pixel1aosp10.0.0_r2(本来想移植fartext,失败了)(aosp11与10的api相关类似,可以自己尝试)原创 2024-07-30 17:44:20 · 405 阅读 · 0 评论 -
btrace:binder_transaction+eBPF+Golang实现通用的Android APP动态行为追踪工具
在进行Android恶意APP检测时,需要进行自动化的行为分析,一般至少包括行为采集和行为分析两个模块。其中,行为分析有基于规则、基于机器学习、基于深度学习甚至基于大模型的方案,各有各的优缺点,不是本文关注的重点,本文主要关注Android APP的动态行为采集。在做Android APP逆向分析时经常需要通过hook系统调用观察APP的行为,也需要一个动态行为追踪工具。btrace(原创 2024-06-14 21:39:24 · 1029 阅读 · 0 评论 -
appproxy 一个轻量级的VPN代理工具,支持HTTP, SOCKS5协议
基于flutter和tun2socks开发.appproxy是一个轻量级的VPN代理工具,支持HTTP, SOCKS5协议功能单只做代理,可分app代理, 双击修改配置逻辑比较简单, 主打一个能用就行.出于学习flutter的目的去做的,分享给大家,顺便帮我测试一下.加上上下游都有了哈哈.原创 2024-06-14 21:16:49 · 404 阅读 · 0 评论 -
记一次全设备通杀未授权RCE的挖掘经历
这篇文章是在挖到这个0day挺久之后写的了。依稀记得当时刚挖到这个漏洞的时候,有着些许兴奋,但更多的是感到不易,因为我当时觉得这条调用链还挺深的,里面也牵涉到了不少东西。但是,当我如今再梳理这个漏洞的相关细节的时候,我觉得这条调用链其实也就那样吧,整个挖掘思路和利用思路都不算难,抛开影响范围,并算不上品相多好的洞QAQ。在挖这个洞的时候,我遇到的最大挑战就是逆向分析了,我觉得这里的逆向难度还是比较大的(当然我逆向水平也很菜)。原创 2024-06-14 21:13:10 · 626 阅读 · 0 评论 -
12秒窃走2500万美元加密货币,麻省理工毕业的黑客两兄弟被捕
据了解,这对兄弟从2022年12月开始筹备犯罪计划,之后的数月,兄弟俩一直在密谋操纵篡改用于验证交易以纳入以太坊区块链的协议(记录每笔加密货币交易的公共分类账)。他们先是利用“诱饵交易”吸引那些专门用于帮助买家和卖家在以太坊网络中寻找有利机会的机器人,然后通过操纵区块结构的过程中的漏洞,重新排序区块并将其添加到区块链中。美国检察官Damian Williams表示,被告的这一盗窃行为动摇了区块链的完整性,引发了对以太坊区块链的安全性和可靠性以及未来类似复杂攻击可能性的担忧。原创 2024-05-24 17:29:54 · 498 阅读 · 0 评论 -
微信小程序反编译/解包
A:使用 wxapkg 的 scan 功能,联网状态下会获取小程序名称。或者删除目录下所有文件再打开一次小程序。⚠新版功能更丰富,但转为闭源,订阅制收费。本文使用 2.0 免费版本。Q:小程序目录下文件太多了,找不到要解包的小程序?A:在微信的设置找到文件路径,小程序文件位于。付费使用最新版,免费使用流传最后一版免费版本。下载可执行文件,或者下载源码编译。使用 unpack 功能解包小程序。使用 scan 功能解包小程序。微信版本:3.9.10.19。Q:如何找到小程序文件位置?wx 子命令支持更多操作。原创 2024-05-24 17:26:50 · 1633 阅读 · 0 评论 -
绕过最新版bilibili app反frida机制
它应该是使用了一些反hook的手段,没有必要和它正面对抗。简单描述一下我的绕过策略,创建一个fake_pthread_create函数,它只有一条ret汇编指令,然后hook来自libmsaoaidsec.so的前2次对dlsym的调用,返回fake_pthread_create函数的地址,这样就达成了欺骗它调用fake_pthread_create函数的目的。输出如下,在加载libmsaoaidsec.so后,调用了2次dlsym获取pthread_create函数,然后进程就终止了。原创 2024-05-24 17:14:12 · 1450 阅读 · 0 评论 -
VM逆向,一篇就够了(下)
虚拟化变异组合保护。我们主要了解一下虚拟化,VMProtect首先会将受保护的代码转换为等价的虚拟代码片段,然后交由虚拟机执行,该虚拟机是VMProtect嵌入到受保护程序中的,因此受保护的程序不需要第三方库活模块即可运行。更为夸张的是,VMProtect允许使用多个不同的虚拟机来保护同一个应用程序的不同代码片段,这大大增加了破解难度。原创 2024-05-24 17:10:14 · 487 阅读 · 0 评论 -
VM逆向,一篇就够了(上)
vm题算是逆向中比较难的一种题型了,就在这里详细的记录一下。程序运行时通过解释操作码(opcode)选择对应的函数(handle)执行。进行初始化工作。在这个函数里,规定了有几个寄存器,以及有几种不同的操 这样看不明显,创建结构体修复一下,结构体长这个样子123456789 12345 修复完的初始化函数123456789 如果rip指向的操作码为F4就返回。调度器,任务是根据opcode选择函数执行123456789101112 循环,找到opcode对应的函原创 2024-05-24 17:04:48 · 903 阅读 · 0 评论 -
通过修改物理内存实现跨进程内存读写
习一下利用修改物理内存来跨进程内存读写系统:win10 21h1 x64编译环境: vs2022 详情见附录。原创 2024-05-24 16:54:18 · 957 阅读 · 0 评论 -
一种简单实用的ollvm反混淆的方案与源码
我是一名从事反欺诈&风控&设备指纹相关的工作,最近对ollvm的如何逆向的问题进行了学习与思考。ollvm是一个开源免费的so混淆工具,对于逆向的小白来说简直是灾难性的存在。这个例子是超简单,我想每个人都可以学会跟掌握,原创 2024-05-24 16:50:48 · 438 阅读 · 0 评论 -
某短视频sig3算法分析
这篇如果写的详细一点的话至少可以写5篇,unidbg,trace技巧,crc32,白盒aes,hmacSha256,我写成一篇确实有点一口吃成大胖子的感觉.可能不太适合刚入行的朋友吗,不过这个作为国内数一数二的短视频加密难度还是很可以的,有基础的可以细细品味一下.原创 2024-04-25 01:17:42 · 1340 阅读 · 2 评论 -
android脱壳第二发:grpc-dumpdex加修复
上一篇我写的dex脱壳,写到银行类型的app的dex修复问题,因为dex中被抽取出来的函数的code_item_off 的偏移所在的内存,不在dex文件范围内,所以需要进行一定的修复,然后就停止了。本来不打算接着搞得,但是写了个框架总得有点真正实用的东西。原创 2024-04-25 00:47:36 · 965 阅读 · 1 评论 -
android脱壳:一种使用native进行抽取壳脱壳的方法,native版本的frida-fart
写rxposed的时候,搞了很多模块,其中有一个远程调用脱壳的,但是当时使用的是rmi远程调用,因为一些问题无法使用,可能是对抗问题,也有可能是技术问题,所以我又换了一种远程调用方式。android的dex加固,有整体dex加固,抽取加固,dex vmp,java2c,虽然有这么多,但是其实就脱壳主要是两个方面,第一个是整体dex脱壳,第二个就是在整体dex脱壳的基础上进行dex加密函数还原。抽取加固,dex vmp,java2c这些加固方式都以函数为粒度,进行函数代码的保护。原创 2024-04-25 00:45:37 · 1152 阅读 · 1 评论 -
Android某钉数据库的解密分析
在对aes_decrypt分析发现就是aes算法,算法分析对应aes 128,196,256加密的方式,就是128字节对应4*4矩阵加密,具体怎么操作自己baidu,发现加密方式采用了128,也就是10轮计算,5:现在还有一个问题就是java参数是怎么生成的,具体是过程就省了,自己往回跟踪就可以搞定,具体放在xml文件com.alibaba.android.rimet_preferences字段dt_bee_db_phone_*下面的值进行md5得到得到32位值。在这个so文件中,能发现。原创 2024-04-25 00:42:17 · 1320 阅读 · 2 评论 -
安卓真机无root环境下的单机游戏修改-IL2CPP
之前在研究手游的il2cpp修改,选取了作为研究对象,由于手上没有root的机子,于是安装在了MuMu模拟器上但是很快发现了问题,游戏只有arm的lib,由于一系列原因,导致我无法获取到的基址在尝试了很多方法后都无法完美的解决这个问题,最终只能考虑安装在真机上了但是目前并没有对机子root的打算,于是选取了注入的方案,这样没有root也可以对游戏进行修改了hhh可以手动操作去理解原理,参考这篇文章当然我这种懒汉肯定是选用自动化方案啦,使用objection来自动化patch apk。原创 2024-03-09 01:08:31 · 1188 阅读 · 0 评论 -
逆向分析 FSViewer 并写出注册机
最近在整理之前的资料, 发现了一篇几年前刚学逆向那会儿写的文章, 是跟着看雪一位大牛的文章做的, 但逆向方法不同, 应该算是自己能逆向出算法的第一款软件了, 发出来纪念一下借鉴了看雪@深山修行之人大牛的文章:FastStone Image Viewer注册算法分析+KeyGen。原创 2024-03-09 01:03:04 · 923 阅读 · 0 评论 -
记一次某汽车app白盒aes还原过程
学逆向一年了 今天第一次写一篇完整的文章 样本难度不高 混淆不算太严重 部分符号没有抹去 才有了攻击点希望这篇文章能对正在学习移动安全的朋友有所帮助。原创 2024-03-09 01:01:11 · 845 阅读 · 0 评论 -
CTF黑客精神:算法还原
这题的解法有很多,可以通过so文件的静态分析,直接将结果写入文件达到解题的目的,不过核心思想肯定是希望我们通过逆向他的算法来获取flag.接下来我将详细的分析算法逆向的过程。原创 2024-02-03 01:16:45 · 1026 阅读 · 0 评论 -
某站平台的签名算法分享
然后用jadx打开xxx.apk包,全局搜索sign字符串,在众多函数方法中,找到一个SignedQuery函数,跟进去看,发现又个loadLibrary(xxx),那么直接告诉我是在一个so里。分析代码,发现关键在 check_app_key_get_type和global_key,一个是app key获取type,还有一个存着类似于secret key的 global key。分析包 看到路径参数如下。原创 2024-02-03 01:01:54 · 881 阅读 · 0 评论 -
被忽视的暗面:客户端应用漏洞挖掘之旅
在2023年12月15日,我有幸参加了由“字节跳动安全中心”举办的“安全范儿”沙龙活动。作为“中孚信息元亨实验室”的一员,我被邀请分享名为“被忽视的暗面:客户端应用漏洞挖掘之旅”的技术议题。现整理成文字版分享出来,由于我不是专门从事二进制工作,因此文章中存在笔误或解释不对的地方,请各位师傅多多包涵!客户端应用漏洞是许多人在进行漏洞挖掘和安全测试时容易忽视的领域。原创 2024-01-19 12:53:32 · 1155 阅读 · 2 评论 -
PC 微信防撤回带提示最新版3.9.8.15
经过很长时间的静态分析加调试,发现在sub_1810E2A50函数中引用的revokemsg有作用,修改sub_1810E2A50函数返回值为0可实现防撤回功能,它接收指令并解析完成后eax保存返回值,当修改eax为0时不会执行撤回。只是这个patch的防撤回使用起来不那么友好,虽然是不会有撤回了,但并不能知道是谁撤回了。毕竟也只是patch掉了标记位让底层撤回函数不执行,没有到更深入的逻辑,实现功能有限。本着上手了的事就要把它做好,后面又继续分析下去,最终实现了防撤回又带提示的功能。原创 2023-12-15 20:18:57 · 1344 阅读 · 0 评论 -
如何确定线程栈的基址?
TEB结构体的指向线程栈底,而指向的是线程栈当前所到达的最低位置。可以在dt命令中通过-y选项来显示特定字段。vmmap.exe可以非常详细的展示进程虚拟内存情况。原创 2023-11-12 22:32:01 · 343 阅读 · 0 评论 -
flutter逆向 ACTF native app
算了一下好长时间没打过CTF了,前两天看到ACTF逆向有道flutter逆向题就过来玩玩啦,花了一个下午做完了.说来也巧,我给DASCTF十月赛出的逆向题其中一道也是flutter,不过那题我难度降的相当之低啦,不知道有多少人做出来了呢~原创 2023-11-12 22:28:22 · 1534 阅读 · 1 评论 -
java 无感hook实现(修改jdk)
12这个就是最终的流程了,优势就是不改java逻辑,java程序无法感知应该这个markdown不会插图呀。。。算了,也懒得插了。原创 2023-10-11 18:26:01 · 153 阅读 · 0 评论 -
Ghidra101再入门(上?)-Ghidra架构介绍
最近有群友问我,说:“用了很多年的IDA,最近想看看Ghidra,这应该怎么进行入门?“这可难到我了。。我发现,市面上虽然介绍Ghidra怎么用的文章和书籍很多,但是结构化介绍Ghidra本身以及它的架构的文章很少(几乎没有)。对于熟悉IDA的群友,反编译器的使用肯定不存在问题,他们需要的是更加深层的知识。那我就小写几篇文章(希望不会挖坑不填);这一篇,就从先Ghidra的架构开始说起吧,希望能给已经熟悉或者正在研究静态逆向的朋友们些许帮助。为什么要整理这些知识?什么是反编译?原创 2023-10-11 18:21:56 · 1007 阅读 · 0 评论 -
Go结构体深度探索:从基础到应用
在计算机编程中,数据结构是组织、管理和存储数据的一种方式,它允许高效地执行各种操作。Go语言中的结构体(Struct)是这些数据结构中的一员,它为数据的组织提供了一种具体的方式。结构体可以被视为是多个字段(即变量)的集合。这些字段可能具有不同的数据类型,但它们共同组成一个单一的逻辑实体。在实际应用中,结构体往往代表真实世界中的对象和概念,例如,一个Person结构体可能包含nameage和address等字段。与其他主要的编程语言相比,Go的结构体有其独特之处。首先,Go不支持传统意义上的类。原创 2023-10-01 19:34:25 · 103 阅读 · 0 评论 -
深入浅出线程池
JAVA不能直接创建线程执行任务,而是通过创建Thread对象调用操作系统开启线程,在由操作系 统回调Runnable接口的run()方法执行任务;实现Runnable的方式,将线程实际要执行的回调任务单独提出来了,实现线程的启动与回调任务 解耦;实现Callable的方式,通过Future模式不但将线程的启动与回调任务解耦,而且可以在执行完成后 获取到执行的结果;多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。原创 2023-10-01 19:27:37 · 109 阅读 · 0 评论 -
八个不可不知的SQL高级方法
掌握高级SQL技术,如窗口函数、CTE、聚合函数、透视表、子查询、交叉连接、临时表和物化视图,可以帮助您更有效地处理复杂的数据分析任务。原创 2023-10-01 19:19:40 · 567 阅读 · 0 评论 -
小日本也有大安全——记一次不寻常的手游反调试,反hook分析与绕过
前两天水友群里老哥遇到了一个游戏样本:我点开一看,符号都没去卧槽??!什么逆天保护:所谓“浅藏诲盗,冶容诲淫”,保护做成这样不就是自找破解吗?于是我想当然的说“这玩意适合新手入门!深入研究了之后,发现比想象中的要复杂,而且检测手段都挺别致,不常见,并且是一款叫做nhnent appguard的日韩商业保护,挺有意思,于是出一篇文章总结以下。原创 2023-08-26 17:09:37 · 171 阅读 · 0 评论 -
某摄像头协议分析
n128_u64[0]代表128位的前64位,.n128_u64[1]代表128位的后64位,而v9为4个int32的数组。使用IDA加载该dll,并跳转到0F69872D这个地址。代码翻来翻去,注意到了这个p2p_log函数,既然静态分析不行,那就看看log日志,了解整个流程,HOOK p2p_log函数后打印已知字符串,就可以得到一大堆log。为ACK,使用IDA打开该so,打开p2p_send_msg_by_udp函数,发现里面并没有加密相关函数,最终追溯追到下面这个函数就戛然而止了!原创 2023-08-10 19:48:36 · 279 阅读 · 0 评论 -
QEMU/KVM + moonlight实现串流游戏作弊
QEMU/KVM + moonlight实现串流游戏作弊GitHub:有些代码是好久之前写的C代码缝合起来的,内存搜索,GameParser这种,因为实在不想重写一遍,看不懂就gdb调起来逆向呗还有些代码是初学c++的时候写的,绘制这块,render模块其实可以用weak_ptr拿共享内存的,有空安排一个C SDK出来。原创 2023-08-10 19:46:32 · 385 阅读 · 1 评论