js逆向、安卓逆向教程

article/2025/11/7 9:23:44

JS基础

提示信息 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

1.零基础js逆向专题


MD5通杀
长度32位置
搜索关键词:
16进制
0x67452301
10进制
1732584193

RSA
搜索关键词:
setpublickey

AES
cryptojs.aes
DES
cryptojs.des.encrypt
 

安卓逆向

1.模拟器环境搭建


Magisk 是一套用于定制 Android 的开源软件,支持高于 Android 5.0 的设备。

以下是一些功能亮点:

  • MagiskSU:为应用程序提供 root 访问权限

  • Magisk 模块:通过安装模块修改只读分区

  • MagiskHide:从根检测 / 系统完整性检查中隐藏 Magisk(Shamiko)

  • MagiskBoot : 最完整的安卓启动镜像解包和重新打包工具

六.安装步骤


1.到官网下载9.0模拟器,并安装
雷电安卓模拟器-手游模拟器安卓版_android手机模拟器电脑版_雷电模拟器官网

[更新!]适用于几乎所有安卓模拟器(7+)安装magisk的教程-简单无脑向
[更新!]适用于几乎所有安卓模拟器(7+)安装magisk的教程-简单无脑向 - 『移动安全区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
(出处: 吾爱破解论坛)

2.下载配置文件

3.安装面具

2.初识APK文件结构、双开、汉化、基础修改

apk 全称 Android Package,它相当于一个压缩文件,只要在电脑上将apk后缀改为zip即可解压。

文件注释
assets目录存放APK的静态资源文件,比如视频,音频,图片等
lib 目录armeabi-v7a基本通用所有android设备,arm64-v8a只适用于64位的android设备,x86常见用于android模拟器,其目录下的.so文件是c或c++编译的动态链接库文件
META-INF目录保存应用的签名信息,签名信息可以验证APK文件的完整性,相当于APK的身份证(验证文件是否又被修改)
res目录res目录存放资源文件,包括图片,字符串等等,APK的脸蛋由他的layout文件设计
AndroidMainfest.xml文件APK的应用清单信息,它描述了应用的名字,版本,权限,引用的库文件等等信息
classes.dex文件classes.dex是java源码编译后生成的java字节码文件,APK运行的主要逻辑
resources.arsc文件resources.arsc是编译后的二进制资源文件,它是一个映射表,映射着资源和id,通过R文件中的id就可以找到对应的资源

2.双开及原理

双开:简单来说,就是手机同时运行两个或多个相同的应用,例如同时运行两个微信

原理解释
修改包名让手机系统认为这是2个APP,这样的话就能生成2个数据存储路径,此时的多开就等于你打开了两个互不干扰的APP
修改Framework对于有系统修改权限的厂商,可以修改Framework来实现双开的目的,例如:小米自带多开
通过虚拟化技术实现虚拟Framework层、虚拟文件系统、模拟Android对组件的管理、虚拟应用进程管理 等一整套虚拟技术,将APK复制一份到虚拟空间中运行,例如:平行空间
以插件机制运行利用反射替换,动态代{过}{滤}理,hook了系统的大部分与system—server进程通讯的函数,以此作为“欺上瞒下”的目的,欺骗系统“以为”只有一个apk在运行,瞒过插件让其“认为”自己已经安装。例如:VirtualApp

选择apk共存

3.汉化APK

汉化:使用专门的工具对外文版的软件资源进行读取、翻译、修改、回写等一系列处理,使软件的菜单、对话框、提示等用户界面显示为中文,而程序的内核和功能保持不变,这个过程即为软件汉化

基本上字符串都是在arsc里,建议一键汉化,然后再润色。
少量没汉化到的字符串参考视频中的方法定位去逐个汉化。

流程图

<font color=#ED7001>这里还需要注意的是,如果要直装应用,那就应该先签名安装,看看是否有签名校验导致的闪退</font>

搜索应用内字符串,修改

核心破解:解决签名失败

开发者工具:

 界面资源分析

最后一句搜索,需要打开dex文件:   Reverse determines height, development determines depth. 

 

 4.初识AndroidManifest.xml

AndroidManifest.xml文件是整个应用程序的信息描述文件,定义了应用程序中包含的Activity,Service,Content provider和BroadcastReceiver组件信息。每个应用程序在根目录下必须包含一个AndroidManifest.xml文件,且文件名不能修改。它描述了package中暴露的组件,他们各自的实现类,各种能被处理的数据和启动位置。

属性定义
versionCode版本号,主要用来更新,例如:12
versionName版本名,给用户看的,例如:1.2
package包名,例如:com.zj.52pj.demo
uses-permission android:name=""应用权限,例如:android.permission.INTERNET 代表网络权限
android:label="@string/app_name"应用名称
android:icon="@mipmap/ic_launcher"应用图标路径
android:debuggable="true"应用是否开启debug权限

3.初识smali,vip终结者

1.了解JVM、Dalvik、ART
2.初识smali语法
3.实战修改smali

二、工具


1.教程Demo(更新)
2.MT管理器/NP管理器
3.雷电模拟器
4.jadx-gui(电脑反编译工具)
5.核心破解(1

三、课程内容


1.什么是JVM、Dalvik、ART

JVM是JAVA虚拟机,运行JAVA字节码程序
Dalvik是Google专门为Android设计的一个虚拟机,Dalvik有专属的文件执行格式dex(Dalvik executable)
Art(Android Runtime)相当于Dalvik的升级版,本质与Dalvik无异

2.smali及其语法

smali是Dalvik的寄存器语言,smali代码是dex反编译而来的。

关键字

名称注释
.class类名
.super父类名,继承的上级类名名称
.source源名
.field变量
.method方法名
.register寄存器
.end method方法名的结束
public公有
protected半公开,只有同一家人才能用
private私有,只能自己使用
.parameter方法参数
.prologue方法开始
.line xxx位于第xxx行

数据类型对应

smali类型java类型注释
Vvoid无返回值
Zboolean布尔值类型,返回0或1
Bbyte字节类型,返回字节
Sshort短整数类型,返回数字
Cchar字符类型,返回字符
Iint整数类型,返回数字
Jlong (64位 需要2个寄存器存储)长整数类型,返回数字
Ffloat单浮点类型,返回数字
Ddouble (64位 需要2个寄存器存储)双浮点类型,返回数字
stringString文本类型,返回字符串
Lxxx/xxx/xxxobject对象类型,返回对象

常用指令

关键字注释
const重写整数属性,真假属性内容,只能是数字类型
const-string重写字符串内容
const-wide重写长整数类型,多用于修改到期时间。
return返回指令
if-eq全称equal(a=b),比较寄存器ab内容,相同则跳
if-ne全称not equal(a!=b),ab内容不相同则跳
if-eqz全称equal zero(a=0),z即是0的标记,a等于0则跳
if-nez全称not equal zero(a!=0),a不等于0则跳
if-ge全称greater equal(a>=b),a大于或等于则跳
if-le全称little equal(a<=b),a小于或等于则跳
goto强制跳到指定位置
switch分支跳转,一般会有多个分支线,并根据指令跳转到适当位置
iget获取寄存器数据

其余指令可用语法工具查询

定位方法:搜索弹窗关键字、抓取按钮id

中文 转 Unicode Unicode编码转换 - 站长工具

//一个私有、静态、不可变的方法   方法名
.method private static final onCreate$lambda-2(Lkotlin/jvm/internal/Ref$IntRef;Lcom/zj/wuaipojie/ui/ChallengeSecond;Landroid/widget/ImageView;Landroid/widget/ImageView;Landroid/widget/ImageView;Landroid/view/View;)Z //(这里面是方法的参数)这里是方法返回值类型,表示布尔值类型,返回假或真.registers 7  //寄存器数量.line 33  //代码所在的行数iget p0, p0, Lkotlin/jvm/internal/Ref$IntRef;->element:I  //读取p0(第一个参数,参考寄存器知识)中element的值赋值给p0const/4 p5, 0x1  //p5赋值1const/16 v0, 0xa //v0赋值10,在16进制里a表示10if-ge p0, v0, :cond_15  //判断p0的值是否大于或等于v0的值(即p0的值是否大于或等于10),如果大于或等于则跳转到:cond_15.line 34  //以下是常见的Toast弹窗代码check-cast p1, Landroid/content/Context; //检查Context对象引用const-string p0, "请先获取10个硬币哦" //弹窗文本信息,把""里的字符串数据赋值给p0check-cast p0, Ljava/lang/CharSequence; //检查CharSequence对象引用invoke-static {p1, p0, p5}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; //将弹窗文本、显示时间等信息传给p1move-result-object p0  //结果传递给p0invoke-virtual {p0}, Landroid/widget/Toast;->show()V  //当看到这个Toast;->show你就应该反应过来这里是弹窗代码goto :goto_31  //跳转到:goto_31:cond_15 //跳转的一个地址invoke-virtual {p1}, Lcom/zj/wuaipojie/ui/ChallengeSecond;->isvip()Z  //判断isvip方法的返回值是否为真(即结果是否为1)move-result p0  //结果赋值给p0if-eqz p0, :cond_43 //如果结果为0则跳转cond_43地址const p0, 0x7f0d0018  //在arsc中的id索引,这个值可以进行查询.line 37invoke-virtual {p2, p0}, Landroid/widget/ImageView;->setImageResource(I)V //设置图片资源const p0, 0x7f0d0008.line 38invoke-virtual {p3, p0}, Landroid/widget/ImageView;->setImageResource(I)Vconst p0, 0x7f0d000a.line 39invoke-virtual {p4, p0}, Landroid/widget/ImageView;->setImageResource(I)V.line 40sget-object p0, Lcom/zj/wuaipojie/util/SPUtils;->INSTANCE:Lcom/zj/wuaipojie/util/SPUtils; check-cast p1, Landroid/content/Context;const/4 p2, 0x2 //p2赋值2const-string p3, "level" //sp的索引invoke-virtual {p0, p1, p3, p2}, Lcom/zj/wuaipojie/util/SPUtils;->saveInt(Landroid/content/Context;Ljava/lang/String;I)V //写入数据goto :goto_50 //跳转地址:cond_43check-cast p1, Landroid/content/Context;const-string p0, "\u8bf7\u5148\u5145\u503c\u5927\u4f1a\u5458\u54e6\uff01" //请先充值大会员哦!check-cast p0, Ljava/lang/CharSequence;invoke-static {p1, p0, p5}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;move-result-object p0invoke-virtual {p0}, Landroid/widget/Toast;->show()V:goto_50return p5  //返回p5的值
.end method //方法结束//判断是否是大会员的方法
.method public final isvip()Z.registers 2const/4 v0, 0x0 //v0赋值0return v0 //返回v0的值.end method

修改方法:修改判断、强制跳转、修改寄存器的值

3.寄存器

在smali里的所有操作都必须经过寄存器来进行:本地寄存器用v开头数字结尾的符号来表示,如v0、 v1、v2。 参数寄存器则使用p开头数字结尾的符号来表示,如p0、p1、p2。特别注意的是,p0不一定是函数中的第一个参数,在非static函数中,p0代指“this",p1表示函数的第一个 参数,p2代表函数中的第二个参数。而在static函数中p0才对应第一个参数(因为Java的static方法中没有this方法)

在判断前加个赋值

    move-result p0const/4 p0, 0x1if-eqz p0, :cond_44

四、课后小作业


1.关掉视频自己复现三种方法
2.完成这个作业demo(因为最近实在是太太太忙了,绝对不是因为我懒,咕咕咕。搞懂这个demo那也基本上能理解本节课的内容)
丑小鸭师傅的demo
链接:百度网盘 请输入提取码 密码:07p9
原文链接:教我兄弟学Android逆向02 破解第一个Android程序

作业:不知道goto是否符合要求?屏蔽掉第147行 #if-eqz p0, :cond_43,让上面的第124行if-ge p0, v0, :cond_15修改为:“goto :cond_15”这样程序就可以自上而下顺利一键三连了,

五、反思&答疑


关于jadx搜不到大会员的unicode编码,这是因为我录视频之前在设置里把unicode的转义打开而导致的,像你们第一次安装jadx都是默认关闭这个选项的,所以能直接搜到大会员的汉字!!!

由于准备不是很充足,我感觉我讲的不是太好,多看看我列举参考文档有利于理解smali语法。

对于开发者而言,在打包应用时,最好对代码进行混淆,否则逆向人员轻而易举得进行Crack,或者说在写代码的时候就不要用isvip、getvip等易辨识的单词作为方法名

推荐 控制流混淆

4、恭喜你获得广告&弹窗静默卡

1.了解安卓四大组件、Activity生命周期
2.弹窗定位、去更新
3.广告分析与布局优化

二、工具


1.教程Demo(更新)
2.MT管理器/NP管理器
3.算法助手
4.雷电模拟器
5.开发助手

三、课程内容


1.广告类型

启动广告     弹窗&更新广告   横幅广告

2.安卓四大组件

组件描述
Activity(活动)在应用中的一个Activity可以用来表示一个界面,意思可以理解为“活动”,即一个活动开始,代表 Activity组件启动,活动结束,代表一个Activity的生命周期结束。一个Android应用必须通过Activity来运行和启动,Activity的生命周期交给系统统一管理。
Service(服务)Service它可以在后台执行长时间运行操作而没有用户界面的应用组件,不依赖任何用户界面,例如后台播放音乐,后台下载文件等。
Broadcast Receiver(广播接收器)一个用于接收广播信息,并做出对应处理的组件。比如我们常见的系统广播:通知时区改变、电量低、用户改变了语言选项等。
Content Provider(内容提供者)作为应用程序之间唯一的共享数据的途径,Content Provider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。Android内置的许多数据都是使用Content Provider形式,供开发者调用的(如视频,音频,图片,通讯录等)

1.activity的切换

        <!---声明实现应用部分可视化界面的 Activity,必须使用 AndroidManifest 中的 <activity> 元素表示所有 Activity。系统不会识别和运行任何未进行声明的Activity。-----><activity  android:label="@string/app_name"  android:name="com.zj.wuaipojie.ui.MainActivity"  android:exported="true">  <!--当前Activity是否可以被另一个Application的组件启动:true允许被启动;false不允许被启动--><!---指明这个activity可以以什么样的意图(intent)启动---><intent-filter>  <!--表示activity作为一个什么动作启动,android.intent.action.MAIN表示作为主activity启动---><action  android:name="android.intent.action.MAIN" />  <!--这是action元素的额外类别信息,android.intent.category.LAUNCHER表示这个activity为当前应用程序优先级最高的Activity--><category  android:name="android.intent.category.LAUNCHER" />  </intent-filter>  </activity>  <activity  android:name="com.zj.wuaipojie.ui.ChallengeFirst" /><activity  android:name="com.zj.wuaipojie.ui.ChallengeFifth"  android:exported="true" />  <activity  android:name="com.zj.wuaipojie.ui.ChallengeFourth"  android:exported="true" />  <activity  android:name="com.zj.wuaipojie.ui.ChallengeThird"  android:exported="false" />  <activity  android:name="com.zj.wuaipojie.ui.ChallengeSecond"  android:exported="false" />  <activity  android:name="com.zj.wuaipojie.ui.AdActivity" />  

启动广告流程:
启动Activity->广告Activity->主页Activity

修改方法:
1.修改加载时间


2.Acitivity切换定位,修改Intent的Activity类名

        switch (position) {  case 0:  Intent intent = new Intent();  intent.setClass(it.getContext(), ChallengeFirst.class);  it.getContext().startActivity(intent);  return;  case 1:  Intent intent2 = new Intent();  intent2.setClass(it.getContext(), ChallengeSecond.class);  it.getContext().startActivity(intent2);  return;  case 2:  Intent intent3 = new Intent();  //new一个Intent,intent3.setClass(it.getContext(), AdActivity.class);  //传入要切换的Acitivity的类名it.getContext().startActivity(intent3);  //启动对应的Activityreturn;  case 3:  Intent intent4 = new Intent();  intent4.setClass(it.getContext(), ChallengeFourth.class);  it.getContext().startActivity(intent4);  return; default:  return;  }

3.Activity生命周期

函数名称描述
onCreate()一个Activity启动后第一个被调用的函数,常用来在此方法中进行Activity的一些初始化操作。例如创建View,绑定数据,注册监听,加载参数等。
onStart()当Activity显示在屏幕上时,此方法被调用但此时还无法进行与用户的交互操作。
onResume()这个方法在onStart()之后调用,也就是在Activity准备好与用户进行交互的时候调用,此时的Activity一定位于Activity栈顶,处于运行状态。
onPause()这个方法是在系统准备去启动或者恢复另外一个Activity的时候调用,通常在这个方法中执行一些释放资源的方法,以及保存一些关键数据。
onStop()这个方法是在Activity完全不可见的时候调用的。
onDestroy()这个方法在Activity销毁之前调用,之后Activity的状态为销毁状态。
onRestart()当Activity从停止stop状态恢进入start状态时调用状态。

4.弹窗定位&堆栈分析

修改方法:
1.修改xml中的versiocode
2.Hook弹窗(推荐算法助手开启弹窗定位)
3.修改dex弹窗代码
4.抓包修改响应体(也可以路由器拦截)

5.布局优化

1.开发者助手抓布局
2.MT管理器xml搜索定位
3.修改xml代码

复制代码 隐藏代码

android:visibility="gone"

四、课后小作业


定位并去除作业demo首页中的弹窗
作业demo.apk - 蓝奏云

作业反馈贴

常见反爬措施

options请求(跨域预检)

options 请求就是预检请求,可用于检测服务器允许的 http 方法。当发起跨域请求时,由于安全原因,触发一定条件时浏览器会在正式请求之前自动先发起 OPTIONS 请求,即 CORS 预检请求,服务器若接受该跨域请求,浏览器才继续发起正式请求。

options请求(跨域预检)_幻彩希的博客-CSDN博客

参考资料:

爬虫从入门到精通(12) | js调试中的一些问题(无限debugger,调试干扰,内存爆破)_爬虫页面一直debug_不愿透露姓名の网友的博客-CSDN博客


http://chatgpt.dhexx.cn/article/WJPpQGYf.shtml

相关文章

学习强国---Android逆向及JS逆向

沐阳~ 各种案例&#xff0c;瑞树啥的&#xff0c;等等&#xff0c;案例多。有意私我&#xff0c;优惠大大 安卓逆向如下&#xff1a; 主&#xff1a; 沐阳~ 课程如下&#xff1a; 1.(ndk)1.初始NDK.mp4 1.(ndk)2.NDK性能提升及数据类型.mp4 1.(ndk)3.JAVA反射结合NDK.mp4 1.(…

js加密参数定位

当我们抓取网页端数据时&#xff0c;经常被加密参数、加密数据所困扰&#xff0c;如何快速定位这些加解密函数&#xff0c;尤为重要。本片文章是我逆向js时一些技巧的总结&#xff0c;如有遗漏&#xff0c;欢迎补充。 所需环境&#xff1a;Chrome浏览器 1. 搜索 1.1 全局搜索…

【APP 逆向百例】Frida 初体验,root 检测与加密字符串定位

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…

巴斯勒相机acA1300-60gm

Basler acA1300-60gm GigE 相机配有 e2v EV76C560 CMOS 感光芯片&#xff0c;每秒 60 帧图像&#xff0c;130 万像素分辨率。

如何选择合适的工业相机

如何选择合适的工业相机 目录 如何选择合适的工业相机简洁具体**多相机检测****工业相机的白平衡知识**工业相机的参数工业数字相机常见问题解决方案参考文献 简洁 工业相机有许多项参数&#xff0c;选择合适的工业相机既要考虑工业相机的参数&#xff0c;也要考虑到项目的精度…

巴斯勒BASLER GIGE相机程序调试报错后需要拔网线

巴斯勒BASLER GIGE相机程序调试报错后需要拔网线的个人解决方案 根据SDK的用户手册提示&#xff0c;在相机连接后&#xff0c;直接执行以下程序。 camera.Parameters[PLTransportLayer.HeartbeatTimeout].TrySetValue(1000,IntegerValueCorrection.Nearest); // 1000 ms time…

机器视觉_工业相机及相关配件选型

文章目录 工业相机一、 概述二、 相机参数1. 传感器芯片1.1. CCD&CMOS1.2. CCD1.3. CMOS1.4. 靶面1.5. 传感器芯片选型 2. 黑白or彩色3. 帧数⭐4. 接口类型4.1. POE供电 三、相关硬件⭐1. 镜头1.1. 焦距⭐1.2. 视野⭐1.3. 物距1.4. 景深⭐1.5. 调焦1.6. 镜头的一些理论小知…

Ubuntu环境下配置巴斯勒相机及相机测试

Ubuntu环境下配置巴斯勒相机及相机测试 Ubuntu配置巴斯勒相机及相机测试软硬件要求Ubuntu虚拟系统安装安装c编译器安装Sublime Text 3及配置C运行环境配置巴斯勒相机SDK及代码测试 Ubuntu配置巴斯勒相机及相机测试 软硬件要求 软件 我们对Markdown编辑器进行了一些功能拓展与…

Python之OpenCV 005 工业相机Basler之图像采集

工业机器视觉系统2D应用用到Basler&#xff08;德国&#xff09;&#xff0c;Baumer&#xff08;瑞士&#xff09;&#xff0c;ImageSource&#xff08;台湾&#xff09;&#xff0c;大恒和海康等等牌子工业相机。 Basler&#xff08;巴斯勒&#xff09;是比较常用的&#xff…

机器视觉 · 工业相机

文章目录 工业相机 面阵相机工业相机 线阵相机工业相机 光场相机工业相机 棱镜相机工业相机 多光谱/高光谱工业相机 偏振相机工业相机 传感器 CCD工业相机 传感器 ICCD工业相机 传感器 EMCCD工业相机 传感器 CMOS工业相机 传感器 sCMOS工业相机 传感器 红外探…

BASLER巴斯勒线扫相机使用流程

(Q有答疑)康耐视智能相机Insight-OCR读取案例 1、相机连接—线缆连接 将相机电源线、网线与相机连接,网线另一端连接电脑 无编码器触发时,只需连接网线、电源线即可 2、修改电脑IP 3、修改相机IP 4、相机连接—软件连接 连接相机有两种方式: 1、双击该相机型号进行连接;…

basler工业相机使用经验小记

1&#xff0c;windows10的系统&#xff0c;要用&#xff15;以上的&#xff53;&#xff44;&#xff4b;不然打不开相机。 &#xff12;&#xff0c;如果用&#xff4f;&#xff50;&#xff45;&#xff4e;&#xff43;&#xff56;或&#xff56;&#xff53;程序打开忘记…

国内工业相机十大排名

国内智能相机十大排名&#xff0c;我们今天先不从视觉检测解决方案的角度出发&#xff0c;而是从ccd视觉检测产品的角度来评选出机器视觉龙头企业。众所周知&#xff0c;整个视觉系统我们所用到的软硬件产品有&#xff1a;光源、镜头、工业相机、视觉软件等&#xff0c;那么在这…

工业相机厂家十大排名

我们今天先不从视觉检测解决方案的角度出发&#xff0c;而是从ccd视觉检测产品的角度来评选出机器视觉龙头企业。众所周知&#xff0c;整个视觉系统我们所用到的软硬件产品有&#xff1a;光源、镜头、工业相机、视觉软件等&#xff0c;那么在这些领域哪些公司做的比较好呢&…

机器视觉-工业相机篇

机器视觉-工业相机篇 工业相机又俗称摄像机&#xff0c;相比于传统的民用相机&#xff08;摄像机&#xff09;而言&#xff0c;它具有高的图像稳定性、高传输能力和高抗干扰能力等优点。目前市面上工业相机大多是基于 CCD &#xff08; Charge Coupled Device &#xff09;或 …

丝贝视像的工业相机系列介绍

目前&#xff0c;丝贝视像的主要工业相机型号如下表所示&#xff0c; 型号分辨率最大帧率可采用备注SVV034-USB2752X48060单色全局快门 SVM001-USB21280x102415单色有少量彩色型号SVM001-USB31280x102430单色有少量彩色型号SVP001-USB32560x192015彩色可定购单色 对大多数普…

巴斯勒相机SDK全代码

本文已参与「新人创作礼」活动&#xff0c;一起开启掘金创作之路。 js using Basler.Pylon; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.T…

机器视觉 工业相机

一、工业相机的结构 工业相机一般由镜头接口、滤光片、图像传感器、驱动电路、数字图像处理模块、转换电路、相机的供电/控制信号接口、图像数据传输组成接口。 二、工业相机的分类 1、按照相机芯片分类 按照芯片工艺分类CCDCMOS曝光方式一般为全局曝光卷帘/全局曝光灵敏…

linux-巴斯勒相机 GigE通信配置步骤

环境&#xff1a;ubuntu18.04 交换机&#xff1a;8端口千兆-带PoE供电功能的交换机 问题&#xff1a;1、始终显示没有设备(no device found)&#xff0c;可能是因为使用了扩展坞&#xff0c;也可能本身就存在这个问题&#xff1b; 2、显示端口冲突。 问题1解决方案&#xff…

Qt调用工业相机之巴斯勒相机

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 开发环境 操作系统&#xff1a;Windows 10 1903 18362.778 相机型号&#xff1a;BASLER acA 1300-60gm 相机软件&#xff1a;pylon_Run…