全部 文章 问答 分享 共找到22个相关内容
[问答] 逆向app 犯法吗?

逆向app 犯法吗?

2021-06-18 22:51 · 逆向
[文章] Mybatis逆向工程的使用
Mybatis逆向工程的使用前言Mybatis逆向工程可以帮助程序员根据数据库表生成实体类、mapper接口、mapper.xml内容。生成后根据设定API执行单表操作。
2020-06-21 11:32 · java / mybatis / mybatis逆向工程 / 代码生成
[问答] 逆向app 犯法吗?

逆向app 犯法吗?

2021-06-18 22:52 · 逆向
[文章] Android逆向植入经纬度破解某力定位打卡
背景在前一篇Android逆向破解某力定位打卡中是通过hook的方式修改坐标数据实现打卡。目前持久化hook有两种,一个是xposed系列,一个是frida-gadget。
[文章] Android逆向-去gif软件广告
顺便分享下如何做简单的app逆向,当然这只是简单的入门,大佬可以关了。
1970-01-01 00:00 · androidKiller / jadx / smali / debug / 逆向
[文章] Android逆向破解某力定位打卡
在做这个逆向的事情的前提,我个人认为,你应该具备以下知识。0:先学会开发!达到入门就OK。1:Java基础扎实,有Android应用层开发的经验,能看懂SDK代码。
2023-01-01 22:15 · Android逆向 / 定位打卡 / hook / frida / 动态调试
[问答] 逆向app 犯法吗?

请求验证码的cookie;

========cookies=======[l_c_i=856679203163078656; Expires=Tue, 21 Jun 2022 15:41:18 GMT; Max-Age=31536000; Domain=sunofbeach.net; Path=/]

登录用的cookie

========cookies=======[l_c_i=856679203163078656; Expires=Tue, 21 Jun 2022 15:41:18 GMT; Max-Age=31536000; Domain=sunofbeach.net; Path=/]

===============https://api.sunofbeach.net/uc/user/login/72

==============={"success":false,"code":11111,"message":"人类验证码不正确","data":null}

========cookies=======[l_c_i=856679203163078656; Expires=Tue, 21 Jun 2022 15:41:18 GMT; Max-Age=31536000; Domain=sunofbeach.net; Path=/]


验证码老是失败, 验证码用的Cookie和登录用的是一样的为啥 老是验证码不对?

2021-06-21 23:45 · koltin
[问答] 想学Android逆向,求指教

目前基础入门水平:去广告,vip权限这些简单的东西

想继续深入学习,但是找不到资料,不知道该怎么精进,有过来人可以指点一下吗?

2023-04-26 16:52 · Android逆向
[文章] Windows开源快捷键检测工具推荐
下面介绍的这款工具就可以帮你解决啦,当然这款软件的功能不限于此,更多功能请下载发现体验啦~简介OpenArk是一款Windows平台上的开源Ark工具.Ark是Anti-Rootkit(对抗恶意程序)的简写,OpenArk目标成为逆向工程师
2021-01-19 10:11 · 开源 / GitHub / 快捷键冲突 / OpenArk / IDEA / AS
[文章] Android逆向-分析只因光视频加载动画
背景同事需要这个动画,我就静悄悄的帮他写一个,打开极光,打卡一个视频,获取极光的视频加载动画,查看如何实现。就是这个金黄色的动画。定位控件通过AS的LayoutInspector选择极光的进程(需要root的设备),等待一段时间就可以把页面的布局dump出来。这个抓取的过程有点麻烦,需要刚好加载中的时候抓比较好定位,可以通过自己开一个360WiFi限制网速来模拟,网络太好可能就看不到了。但是看是看不到了,布局中肯定还是存在这个view的组件,就是不方便定位,同样ddms的页面dump也可以。通过分析可以得到,这个动画组件的对象是Lottie,着就好办了。如果你不是做开发的,甚至做开发的可能都没听过这个东西。https://github.com/airbnb/lottie-android,LottieisamobilelibraryforAndroidandiOSthatparsesAdobeAfterEffectsanimationsexportedasjsonwithBodymovinandrendersthemnativelyonmobile!从ae,pr这种软件做出啦的特效这个库可以加载,导出来的产物就是图片,json字符串(特效)。学习Lottie的使用想拿到这个动画,或者我们想把它扣出来,先学习Lottie是怎么在Android上使用的。这是使用文档:http://airbnb.io/lottie/#/android文档中重要的部分是:特效文件的存在位置可以是。Lottiecanloadanimationsfrom:Ajsonanimationinsrc/main/res/raw.Ajsonfileinsrc/main/assets.Azipfileinsrc/main/assets.Seeimagesdocsformoreinfo.AdotLottiefileinsrc/main/assets.Aurltoajsonorzipfile.Ajsonstring.Thesourcecanbefromanythingincludingyourownnetworkstack.AnInputStreamtoeitherajsonfileorazipfile.项目导入Lottie之后,在页面中增加组件即可:<com.airbnb.lottie.LottieAnimationViewandroid:id="@+id/animation_view"android:layout_width="wrap_content"android:layout_height="wrap_content"app:lottie_rawRes="@raw/hello_world"//orapp:lottie_fileName="hello_world.json"//Loopindefinitelyapp:lottie_loop="true"//Startplayingassoonastheanimationisloadedapp:lottie_autoPlay="true"/>这里可以配置特效对应的文件,就是这么简单?也可以通过animationView.setAnimation方法动态设置特效json文件,animationView.playAnimation主动开启动画。分析动画的加载和定位资源知道这些之后,这个组件的用法也有了,反过来猜测,组件源头应该是一个publicvoidsetAnimation(finalStringassetName){this.animationName=assetName;animationResId=0;setCompositionTask(fromAssets(assetName));}字符串!直接hook它拿到字符串,再写个demo要验证。varcom_airbnb_lottie_LottieAnimationView_clz=Java.use('com.airbnb.lottie.LottieAnimationView');//hook设置特效jsonvarcom_airbnb_lottie_LottieAnimationView_clz_method_setAnimation_0996=com_airbnb_lottie_LottieAnimationView_clz.setAnimation.overload('java.lang.String');com_airbnb_lottie_LottieAnimationView_clz_method_setAnimation_0996.implementation=function(v0){varexecutor=this.hashCode();varbeatText='publicvoidcom.airbnb.lottie.LottieAnimationView.setAnimation(java.lang.String)';varbeat=newMethodBeat(beatText,executor);console.log("设置动画json:"+v0);com_airbnb_lottie_LottieAnimationView_clz_method_setAnimation_0996.call(this,v0);printBeat(beat);};//hook启动动画varcom_airbnb_lottie_LottieAnimationView_clz_method_playAnimation_1116=com_airbnb_lottie_LottieAnimationView_clz.playAnimation.overload();com_airbnb_lottie_LottieAnimationView_clz_method_playAnimation_1116.implementation=function(){varexecutor=this.hashCode();varbeatText='publicvoidcom.airbnb.lottie.LottieAnimationView.playAnimation()';varbeat=newMethodBeat(beatText,executor);com_airbnb_lottie_LottieAnimationView_clz_method_playAnimation_1116.call(this);printBeat(beat);};通过hook发现有多个调用,但是没有关系,丢进demo里面去跑一跑看看效果。其中有一个是这样的。是一个彩色的,但是不是金色的,还送了个彩蛋~~~~(经过分析猜测是vip才显示这个动画)通过上面hook时候打印的堆栈信息,很快就定位到启动位置:启动动画前设置了一个资源文件夹setImageAssetsFolder("lottieAni/"),这个文件可以在assets目录中找到。查看图片居然发现了这个:离开答案又近了一点。继续回到代码,设置的不是string类型的特效,是一个setComposition(lottieCompsition),上面刚好也有一个getComposition的方法,进去看看具体实现:从方法实现来看,如果没有缓存,就从fromRawFile中加载出来。开发的小伙伴知道答案在哪里了。开发知识:我们放资源文件到App中,如果你丢进去的目录是assets或者raw目录,会原封不动的复制进去,不会修改,通常都是放assets目录,但是在使用的时候不能通过语法糖R.xx获取,如果你存放在raw目录可以通过R.raw.xx获取到资源引用。这里的操作就是从raw下取资源。把raw目录下的资源一个个加载,最后发现mediaplayer_loading_vip_layout.json是我们需要的特效。文件的命名也可以猜出是播放器的资源。demo加载的代码也比较简单。LottieAnimationViewanimationView=(LottieAnimationView)findViewById(R.id.animation_view);animationView.setAnimation("lottieAni/mediaplayer_loading_vip_layout.json");animationView.setImageAssetsFolder("lottieAni/");animationView.loop(true);animationView.playAnimation();代码也不多,给出结构和代码预览:样本地址:https://wwsk.lanzouy.com/iZVI60otn6pi总结我们需要的设备和熟悉的技能。准备好设备root的手机,debuggable=1。布局dump进行分析。熟悉Android的各种主流开发组件。反编译定位和hook调试,代码分析。
2023-03-06 10:58 · Android逆向 / Android / 协议分析 / hook / 动画分析
[文章] 安卓开发,混淆规则应该怎么写?
混淆的主要目的是为了提高应用程序的安全性和减少二进制文件的大小,具体包括以下几个方面:代码保护:反逆向工程:混淆通过对类名、方法名、字段名进行随机重命名,使得逆向工程师难以理解原始代码逻辑,增加了对代码的分析难度
2024-01-26 18:04 · 混淆 / 安卓开发 / 代码加密 / 发布版本 / 安卓
[文章] Android逆向吾爱新年题目Android01
吾爱新年题目Android01来玩玩新年题目Android的第一题:抓小猫咪。体验打开app之后是这样的:尝试捕捉猫猫。运气真好,居然抓到了。app开始白屏,我点击了一下屏幕,居然是一个在播放视频,我继续等待视频播放完成。居然是它。继续等待之后。就弹出了flag了。代码分析环境:root的手机,macOS,frida,jadx。抓猫猫有点运气的,看看apk的逻辑。jdax打开apk。打开app的第一个页面,就是刚刚打开apk后的页面,不要动。使用命令dump下当前的activity栈信息,看看当前的页面是哪个activity。Android低版本,应该是10以下,可以尝试用这个命令,我是用的macOS或者Ubuntu,win不支持grep命令需要安装一个grep支持插件adbshelldumpsyswindow|grepmFocusedApp大于等于Android10,使用这个命令:adbshelldumpsysactivity|grep-irun执行dump之后拿到了app的包名信息和当前的activity的名字信息。ACTIVITYcom.zj.wuaipojie2024_1/.MainActivity9c3b5bepid=21527jdax中打开app发现了MainActivity:分析MainActivity#页面加载UI的回调函数publicvoidonCreate(Bundlebundle){super.onCreate(bundle);setContentView(R.layout.activity_main);//复制了Asset中文件,先不管copyAssets();//初始化一个webview,应该加载那个抓小猫游戏WebViewwebView=(WebView)findViewById(R.id.webView);this.webView=webView;webView.setInitialScale(100);this.webView.getSettings().setJavaScriptEnabled(true);this.webView.setWebViewClient(newWebViewClient());//这个就是小猫游戏的HTML页面,有兴趣可以看看怎么写,或者修改这个游戏直接通关this.webView.loadUrl("file:///android_asset/index.html");//webview和原生交互的接口定义部分this.webView.addJavascriptInterface(newMyJavaScriptInterface(this),"AndroidInterface");}按照正常流程,webview游戏抓小猫,如果成功了,就应该通知原生代码做某事,比如刚刚抓小猫成功了,开始播放视频。this.webView.addJavascriptInterface(newMyJavaScriptInterface(this),"AndroidInterface");这里就是表示webview和原生之间通信的定义,关注MyJavaScriptInterface这个类。里面就是通信的逻辑。MyJavaScriptInterface的代码复制出来:publicclassMyJavaScriptInterface{privateContextmContext;publicMyJavaScriptInterface(Contextcontext){this.mContext=context;}@JavascriptInterfacepublicvoidonSolverReturnValue(inti){if(i==-1){this.mContext.startActivity(newIntent(this.mContext,YSQDActivity.class));}}}代码除了构造函数之外还有一个函数:onSolverReturnValue,有一个参数i,下面判断i如果等于-1就跳转到新一个Activity:YSQDActivity。进入这个Activity看看做了什么事情。1、设置页面横屏。2、初始化一个视频播放组件,播放/data/user/0/com.zj.wuaipojie2024_1/files/ys.mp43、播放完成后处理flag,最后显示在TextView上面。也就是抓到小猫就进入这个页面自动播放视频,最后得到flag。那如果我一直抓不到小猫怎么办,就一直无法跳转到这个YSQDActivity页面了。解题方案1还记得webview和原生代码交互的类:MyJavaScriptInterface里面有一个函数就是跳转flag页面的。@JavascriptInterfacepublicvoidonSolverReturnValue(inti){if(i==-1){this.mContext.startActivity(newIntent(this.mContext,YSQDActivity.class));}}假设我们主动调用这个函数,给他传递i==-1,就可以跳了。jadx可以直接帮我们写hook代码:拿到hook代码之后修改一下:Java.perform(function(){setTimeout(function(){//找到MyJavaScriptInterface类varMyJavaScriptInterface=Java.use('com.zj.wuaipojie2024_1.MyJavaScriptInterface');//获取当前Activity实例Java.choose('com.zj.wuaipojie2024_1.MainActivity',{onMatch:function(instance){console.log("FoundMainActivityinstance:"+instance);//在这里可以对找到的实例进行操作varmyJSInterface=MyJavaScriptInterface.$new(instance);//主动调用函数myJSInterface.onSolverReturnValue(-1);},onComplete:function(){console.log("Searchcompleted");}});}手机启动fridaserver,电脑启动脚本:frida-U-fcom.zj.wuaipojie2024_1-lhook_hunter.js成功进入flag页面。解题方案2上面是主动调用函数,触发启动flag页面的思路,既然是这样,Android系统本身也支持通过命令行方式主动启动一个app的Activity。就好比你在某个app内有一个商品广告,点击后进入某个购物app的商品详情这个流程。要进入第三方app的某个Activity需要知道最简单的2个参数,目标app的包名,Activity的全路径。app包名:com.zj.wuaipojie2024_1flag的Activity路径:com.zj.wuaipojie2024_1.YSQDActivityadb命令是这样的:adbshellamstart-ncom.zj.wuaipojie2024_1/com.zj.wuaipojie2024_1.YSQDActivity终端执行命令之后遇到这样错误adbshellamstart-ncom.zj.wuaipojie2024_1/com.zj.wuaipojie2024_1.YSQDActivityStarting:Intent{cmp=com.zj.wuaipojie2024_1/.YSQDActivity}Exceptionoccurredwhileexecuting'start':java.lang.SecurityException:PermissionDenial:startingIntent{flg=0x10000000cmp=com.zj.wuaipojie2024_1/.YSQDActivity}fromnull(pid=26521,uid=2000)notexportedfromuid10114atcom.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1047)atcom.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:975)atcom.android.server.wm.ActivityStarter.execute(ActivityStarter.java:665)atcom.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1201)atcom.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1173)atcom.android.server.am.ActivityManagerService.startActivityAsUserWithFeature(ActivityManagerService.java:2926)atcom.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:562)atcom.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:193)atcom.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)atandroid.os.ShellCommand.exec(ShellCommand.java:38)atcom.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:8609)atandroid.os.Binder.shellCommand(Binder.java:950)atandroid.os.Binder.onTransact(Binder.java:834)atandroid.app.IActivityManager$Stub.onTransact(IActivityManager.java:5106)atcom.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2498)atandroid.os.Binder.execTransactInternal(Binder.java:1184)atandroid.os.Binder.execTransact(Binder.java:1143)错误原因:java.lang.SecurityException:PermissionDenial权限不够,OK,提升权限就行了。adbshellsu#进入shell之后就不用adbshell了amstart-ncom.zj.wuaipojie2024_1/com.zj.wuaipojie2024_1.YSQDActivity#看到下面提示,观察app,可以看到进入播放视频页面Starting:Intent{cmp=com.zj.wuaipojie2024_1/.YSQDActivity}最后1、直接玩游戏抓小猫挺好玩的。2、通过分析代码找到flag需要Android的基础知识,组件,页面的常用逻辑。3、可以通过am命令快速进入一个Activity,注意权限问题。第二天同理秒过。
2024-03-01 14:17 · Android / Android逆向 / hook / 反编译
[文章] Android逆向-爆破B站App的点赞动画
背景阳光沙滩App开发点赞功能,有同学觉得点赞需要点效果,我第一印象就是b站的点赞挺好看的,那就拿过来!需要的环境Android手机root,xposedb站Appddms需要把ro.debuggable设置1,这样在ddms中可以看到全部进程分析trace文件jadx分析apk代码rootexplorer工具查看/data/下的安装数据突破ddms文件trace的8mb限制获取点赞的时候的堆栈我们打开ddms,选择b站app的进程。我们先找到他的包名,包名就是进程名字。打开App,随便一个页面。然后执行我们的find包名:tv.danmaku.bili打开ddms查看进程。开始打开的时候,可能什么都不显示,我们需要resetadb一次。点击之后就能看到全部进程了。找到了主进程就行,如果同名字后面有:xxx的是子进程,这个我们不需要关注,我们的ui在主进程中。接下来,我们打开随便一个视频,点赞一下,发现了点赞的动画显示了。我们再点赞取消它。下面开始录制堆栈。选中进程,点击一下这个红色的录制按钮。弹出录制框。选择下面这个,然后点击ok点击ok之后,马上点赞一次触发动画。然后马上回来工具,点击停止录制。一定要快,不然录制堆栈数据很多,分析起来麻烦。ddms停止后,会显示这样的一份文件,开始分析里面的堆栈就行了。这个工具是记录运行中全部的运行记录,也就是不管他有没有加壳,什么混淆的,都记录在里面了,想跑都跑不掉,除了native的方法。分析trace我们通过搜索click,然后把全部堆栈一条一条看一次。看到我头晕了,翻到差不多结尾的时候突然发现了一些端倪,这个地方创建了一个popwindow,里面有SVGAImageView??pop设置宽度,后面还有一些File的操作?应该就是你了,验证自己的猜想。反编译apk找动画代码二营长,把意大利炮(jadx)抬上来。apk丢进去jadx中,根据上面的路径,找对应的class:tv.danmaku.bili.ui.vide.widget.k.a看到这个路径,widget?这不是常用的组件才放这个里的?找对这个类的代码,打开看看。代码不对,直接阅读下就好了,找对重要的地方,再验证就行了。好家伙,看文件命名就知道跑不掉了,这里有2个版本的点赞svga文件,也就是我们找到文件就行了。把apk改.zip解压,在搜索中过滤.svga,看看结果。在apk中一个都没有?可能是远程下载的文件。换个方式。我们去/sdcard/Andord/data/包名下搜索,结果也是没有的。那就直接进入安装目录搜索吧。使用re文件管理器的搜索功能.svga里面好几十个文件,当就快绝望的时候,翻到尽头了,熟悉的文件名啊~~~把他复制出来,验证下是不是点赞?打开svga的在线播放器:http://svga.io/svga-preview.html把他拖进去看看。收工了~~~,三点几了
1970-01-01 00:00 · 逆袭 / Android / debug / b站 / 断点
[文章] Frida系列-环境配置
主角:frida基于frida的逆向工具集hooker环境需要Macos或者Linux手机需要root进入我们的系统,先拉取工具代码//https://github.com/CreditTone/hookergitclonehttps
1970-01-01 00:00 · frida / hook / root / debug / xposed
[文章] Android-adb获取当前手机顶层activity
背景开发或者逆向或者接收新项目的时候,打开某个页面但是不知道当前activity,定位需要时间,adb有命令帮助我们拿到这个数据的,分享低版本和高版本的adb获取顶层activity方式。
1970-01-01 00:00 · adb / debug / android / 断点
[文章] JavaWeb博客系统后端-创建对应的bean类
知道是对象就对了,其实就是javaBean创建对应的JavaBean类JavaBean类与数据库字段对应,好在现在有逆向工程,或者我们的工具,可以直接帮助我们生成对应的java类比如说我们这里使用到的PDMan
2020-01-25 00:55 · pojo / bean / java / web / 后台
[文章] (10)王道数据结构-建立链表
=NULL&&j<i){//循环找到第i个节点p=p->next;j++;}returnp;}//头插法建立单链表(逆向建立单链表)LinkListListHeadInsert
2022-08-08 17:24 · 数据结构 / 单链表 / 插入操作
[文章] 程序编译执行流程
对C/C++语言进行反汇编对时候,就是将应用程序的动态链接库或静态链接库,逆向到编译阶段生成的汇编语言,从而分析高级语言C/C++的逻辑代码。
2020-03-20 16:55 · 编译
[文章] Java学习之Mybatis-plus与Security的简单整合
--逆向工程--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator
2021-02-23 11:05 · Security
[文章] Java学习之Spring Security整合JWT详解学习笔记
--逆向生成的模板--><dependency><groupId>org.apache.velocity</groupId><artifactId>
2021-02-23 11:06 · JWT / Security
[文章] Android改机系列Pixel3上车Kernel SU
公众号2:https://mp.weixin.qq.com/s/7OQ0PtKFTUQbffP5S78PIA环境:Ubuntu18.04vmaosp10r2内核下载和编译查看之前的文章文章Android逆向技术
2023-04-01 10:22 · KernelSU / Kernel / root / Android / Pixel3
[文章] 25000字总结Android优秀的第三方框架、各种学习资料(上)
FragmentGithub以卡片视图的形式管理你的Activity,让你的app可以自由的切换、跳转、关闭Activity以及结束app程序Github类Android5.0任务管理的控件GithubAndroid逆向实用小插件
2020-05-18 19:56 · android
  • 1