- 博客(13)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一种linux平台下算法库二进制文件加密方法探讨
最近做项目遇到一个需求,需要把我们的图像算法库提供给客户使用,为防止算法库被对方滥用和逆向破解,需要对算法库二进制文件做加密处理以及加密狗绑定,同时防止库文件被反调试跟踪。算法库加密可以借助开源软件 openssl实现,加密狗的使用也很简单,从加密狗官方渠道即可拿到arm平台下的支持库和简单的示例程序。接下来就是如何构建对二进制库文件的加解密以及如何安全的映射至进程地址空间中,一个最容易想到的思路是对算法库文件套上一层外壳,由外壳程序完成算法库的自动解密以及完全脱离文件系统的进程内存映射,整...
2021-08-20 19:26:26
2055
原创 u-boot nand驱动测试yaffs2文件系统
测试验证过程中会使用诸如nand flash的擦除、读写,yaffs2文件系统挂载、卸载操作等各类命令,大致列举如下:tftpbmd5summdydevconfigydevlsymountyumountytraceylsymkdirymvyrdyrdmyrmyrmdirywrywrmMTD_OPS_RAW模式no-ecc读取data + oobMTD_OPS_RAW模式no-ecc依次写入data + oob(适用于关闭ECC功能时的yaffs2镜像写入)
2023-08-03 00:28:36
687
原创 linux-2.6.38 pid对象管理方式学习笔记
进程ID对于linux内核的进程管理至关重要,进程ID包括PID、PGID、SID和TGID等,每个进程的task_struct除了维护有全局的level 0级别的pid、tgid以及保存在信号处理结构中的会话ID和进程组ID(task_struct->signal->__session + task_struct->signal->__pgrp)外,还需关联到pid分配子系统维护的各个pid命名空间的数据结构中。linux支持多级嵌套的PID命名空间,相同level...
2021-09-21 23:25:05
310
原创 借用windows端口转发为板卡赋能apt-get
最近调试一款相机,内置的ubuntu系统,通过网线直连到笔记本电脑,支持ssh登录相机,但为方便调试准备在相机里安装xrdp环境,使用远程桌面连接过去测试图形程序。直接交叉编译xrdp较为繁琐,考虑到windows和linux都支持跨网段的报文转发,可以将相机apt-get上来的报文转发至无线网卡,由无线网卡发送至外网服务器。首先确保windows满足以下条件:1. 防火墙例外端口或关闭2. Win7以上的IP Helper服务启动3. Net.tcp Port sharin...
2021-09-01 13:05:03
425
原创 linux下远程桌面RDP的使用
在上一家单位工作时,我们有个ubuntu编译服务器位于上海,我们需要在无锡使用远程登录工具连接过去,当时使用的是xshell来传输Ubuntu下应用程序的X11界面,底层应该用的是ssh -X来实现X11转发。但是xshell的ssh协议本身就不是针对于远程桌面这种场景所设计的,因此通过公网ip连接后,操作远端图形应用时有很大的延迟滞后。通过查询资料,得知目前最好的远程桌面协议是Windows自带的mstsc的RDP协议,而Xrdp是Microsoft 远程桌面协议 (RDP) 的开源版本,...
2021-08-26 19:32:04
7487
原创 驱动程序中使用系统调用的方法
众所周知我们无法在内核驱动程序中直接使用系统调用接口,但有时项目上会有类似需求,借助系统调用简单明了的接口设计,可以帮助我们在驱动程序中实现各种功能。我们可以利用内核提供的kallsyms_lookup_name机制(编译时需打开相关功能),配合set_fs系列函数实现在内核驱动程序中间接调用系统调用。 以下示例代码来源于一个实际的项目需求,af3840 sfm312子卡驱动程序中在将i2c adapter注册到i2c总线上时,需要为/dev/i2c-?建立一个软链接,公司...
2021-08-26 18:17:59
578
原创 linux用户态程序堆栈打印 - backtrace
很久之前写的测试代码,研究利用backtrace配合addr2line打印用户态进程堆栈信息(•̀⌄•́)#include <execinfo.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h> #include <string.h>#define EXCMD "addr2line -p -f -e ./test "#define TESTIN...
2021-08-25 20:23:42
690
原创 小技巧 - 提取linux内核实际编译的目标代码文件
linux内核源码支持多种平台,且内置了大量的功能开关选项使能或禁用特定的模块,因此内核源码中会有大量的同名接口实现以及没有实际编译的模块代码。有时候我们想仅仅关注那些编译进vmlinux中的那些模块的.c源码,针对这些源码建立新的内核源码树,然后使用cscope之类的工具定位函数就会方便很多。那么如何删除没有使用到的.c文件呢?本文提供一种极为简易且准确的实现方法供大家参考。 思路很简单,考虑到内核的每个.c文件最终都会通过一条Makefile的语句进行编译,因此只要找到...
2021-08-25 19:40:51
530
原创 将二进制程序打包到shell脚本中发布
有时候我们需要发布自己的程序给第三方安装使用,最简单的方法是将待发布的文件加上一个install安装脚本一起打包发布。后来机缘巧合下发现一款linux游戏的安装包只有一个安装脚本就实现了离线安装,出于好奇研究了下脚本实现,发现他们使用了简单的技巧将安装文件整体打包后追加到了脚本文件的末端,由脚本实现自解压以及后续的安装动作。 本文利用这个技巧实现了一个简易的安装程序,方便大家参考,脚本如下:#!/bin/shprint_services() { ... ex...
2021-08-25 11:25:24
934
原创 ssh保活方法和图形界面传输配置
1、 在ssh客户端启动远程服务器的图形界面程序 如果你试图在ssh客户端运行远程服务器的一个图形界面程序,比如说执行firefox,此时可能会提示,can not connect to X server 或者 Error: GDK_BACKEND does not match available displays,前者是centos中的提示,后者是ubuntu中的提示。原因都是图形界面程序需要相关的图形服务器才能使用。 有两种方式可以解决,一种是在客户端进行处理,另一种...
2021-08-25 10:43:23
704
原创 GCC编译器对宽字符的处理规则
GNU C/C++编译器也可以正确支持wchar_t字符和字符串,但是源代码的保存格式必须符合下面条件:一、源代码文件的保存编码必须是UTF-8二、UTF-8编码格式的源代码文件,不能有BOM标志头。 只有源代码文件符合上面两个条件,gcc才会正确支持wchar_t字符和字符串。如果不符合上面两个条件的话,有可能会编译出错,有可能会产生错误的wchar_t字符和字符串。gcc在Windows平台下,wchar_t是16位类型,在Linux平台下,wchar_t是32...
2021-08-23 20:29:32
1063
原创 编译制作交叉编译链arm-linux-gnueabi-gcc
1. 预先编译gcc依赖库:gmp/mpfr/mpc2. 编译binutils:lyfan@LAPTOP-2TDO37E5:~/share$ tar Jxf binutils-2.32.tar.xz && cd binutils-2.32 && mkdir build && cd buildlyfan@LAPTOP-2TDO37E5:~/share$ ../configure --build=x86_64-linux-gnu --target..
2021-08-23 20:18:11
895
原创 提取u-boot fw_env环境变量生成工具
u-boot源码目录tools/env下定义有用来制作u-boot环境变量固件的fwenv工具,虽然可以使用make envtools直接编译生成fwenv,不过在u-boot工程下直接编译生成的fwenv是针对目标机的,只能在目标机上运行。本文将u-boot v2019.2源码的fwenv工具单独抽取出来,经过简单修改后可以编译生成适合在其他主机执行的fwenv工具,以便独立制作u-boot环境变量固件烧写板卡。项目地址:https://gitee.com/liangyuf/fwenv...
2021-08-21 17:48:46
493
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人