- 博客(81)
- 收藏
- 关注

原创 某起名软件逆向分析
9-4-2、逐字节对9-4-1的字符串进行转换,如果当前字符是数字,则与8进行异或运算。9-4-4、9-4-3的计算结果第11、12、7、8、5、6、3、4位拼接为计算结果。9-4-1、将MD5的4、5、13、14、8、9、11、12、1、2、6、7拼接。3、第5位如果是6、7、B、b则第5位为1、如果是8、9、C、c时为2.5、第7位如果是4、5、A、a则第7位为0、如果是6、7、B、b时为1。4、第6位如果为A、B、C、D、E、F、G、H、J、K分别对应0-9。这个程序是.net的,无壳,32位。
2025-04-15 15:04:08
1821

原创 SI ObjectBrowser 注册破解
6、license第13-16字节按1、2、3、4字节顺序从KeyTable2中查表并分别减去license第9-12字节按2、3、4、1的顺序从KeyTable中查表得到的位置做差,如果差<1则加上36,得到的位置从KeyTable中获取字符。9、license第25-28字节按1、2、3、4字节顺序从KeyTable2中查表并分别减去license第5-8字节按2、3、4、1的顺序从KeyTable中查表得到的位置做差,如果差<1则加上36,得到的位置从KeyTable中获取字符。
2025-04-09 17:22:37
766

原创 动静态库快速编译为鸿蒙版本
熟悉IDE的会说,去build目录里复制出来就行了。没错,可以这样,但个人很不喜欢,so文件在build目录里真的太深了,不只目录深,隐藏的也深。可以看到,cmake编译时的命令就在这个文件里,这样就好办了,自己写一个批处理,已有动态库编译成鸿蒙版本就可以和其它CPU架构一样了。仔细观察编译生成的路径,在.cxx目录下,有一个metadata_generation_command.txt文件,打开文件,内容如图。至于Cmakelist.txt的编写,这里就不详细介绍了,其实并不难,而且大多数人也是会的。
2024-09-26 09:36:10
654
原创 C Primer Plus 第6版 编程练习——第12章
然后,接收用户输入的单词,并显示出来,使用 malloc()并回答第1个问题(即要输入多少个单词),创建一个动态数组,该数组内含相应的指向char的指针(注意,由于数组的每个元素都是指向char的指针,所以用于存储 malloc()返回值的指针应该是一个指向指针的指针,且它所指向的指针指向char)。在读取字符串时,该程序应该把单词读入一个临时的char数组,使用malloc()分配足够的存储空间来存储单词,并把地址存入该指针数组(该数组中每个元素都是指向char的指针)。可以假设用户输入的都是数值数据。
2025-07-25 10:42:32
776
原创 C Primer Plus 第6版 编程练习——第11章(下)
12.编写一个程序,读取输入,直至读到 BOF,报告读入的单词数、大写字母数、小写字母数、标点符号数和数字字符数。13.编写一个程序,反序显示命令行参数的单词。例如,命令行参数是 see you later,该程序应打印later you see.14.编写一个通过命令行运行的程序计算幂。第1个命令行参数是double 类型的数,作为幂的底数,第2个参数是整数,作为幂的指数。16.编写一个程序读取输入,直至读到文件结尾,然后把字符串打印出来。如果输入的字符串不是纯数字,该函数返回0。
2025-07-25 10:20:45
245
原创 C Primer Plus 第6版 编程练习——第11章(中)
如果第2个字符串包含在第1个字符串中,该函数将返回第1个字符串开始的地址。否则,该函数返回空指针。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。该程序为用户提供一个有5个选项的菜单:打印源字符串列表、以ASCII中的顺序打印字符串、按长度递增顺序打印字符串、按字符串中第1个单词的长度打印字符串、退出。在一个程序中测试该函数,使用循环读取输入行,直到用户输入一行空行。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
2025-07-24 13:25:27
319
原创 C Primer Plus 第6版 编程练习——第11章(上)
5.设计并测试一个函数,搜索第1个函数形参指定的字符串,在其中查找第2个函数形参指定的字符首次出现的位置。如果成功,该函数返指向该字符的指针,如果在字符串中未找到指定字符,则返回空指针(该函数的功能与 strchr()函数相同)。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。3.设计并测试一个函数,从一行输入中把一个单词读入一个数组中,并丢弃输入行中的其余字符。1.设计并测试一个函数,从输入中获取n个字符(包括空白、制表符、换行符),把结果存储在一个数组里,它的地址被传递作为一个参数。
2025-07-24 11:30:59
157
原创 C Primer Plus 第6版 编程练习——第10章(下)
也就是说,如果数组1中包含的值是2、4、5、8,数组2中包含的值是1、0、4、6,那么该函数把3、4、9、14赋给第3个数组。7.编写一个程序,初始化一个double类型的二维数组,使用编程练习2中的一个拷贝函数把该数组中的数据拷贝至另一个double类型的二维数组中(因为二维数组是数组的数组,所以可以使用处理一维数组的拷贝函数来处理数组中的每个子数组)。8.使用编程练习2中的拷贝函数,把一个有7个元素的数组中第3~第五个元素拷贝至含3个元素的数组中。a.把用户输入的数据存储在3X5的数组中。
2025-07-23 10:04:28
349
原创 C Primer Plus 第6版 编程练习——第10章(上)
2.编写一个程序,初始化一个double数组,然后把该数组的内容拷贝至3个其他数组中(在main()中声明这4个数组)。5.编写一个函数,返回存储在double数组中最大值和最小值的差,并在一个简单的程序中测试该函数。4.编写一个函数,返回存储在double类型数组中最大值的下标,并在一个简单的程序中测试该函数。6.编写一个程序,把double类型数组中的数据倒叙排列,并在一个简单的程序中测试该函数。3.编写一个函数,返回存储在int类型数组中的最大值,并在一个简单的程序中测试该函数。
2025-07-23 09:42:38
428
原创 【加解密与C】Rot系列(四)RotSpecial
RotSpecial 是一个自定义函数,通常用于处理特定的旋转操作,尤其在图形变换或数据处理中。该函数可能涉及欧拉角、四元数或其他旋转表示方法,具体行为取决于实现上下文。这里给出的是一个简单的定义,即对大小写字母进行旋转,旋转长度从1开始递增,解密时反向旋转。如需具体实现细节,建议查阅相关代码库或文档的上下文定义。
2025-07-22 09:26:40
208
原创 【加解密与C】Rot系列(四)Rot8000
Rot8000 是一种基于 Unicode 字符集的旋转加密算法,类似于经典的 Rot13,但扩展到了更大的字符范围(通常是 Unicode 的基本多语言平面,即 U+0000 到 U+FFFF)。Rot13 仅适用于 26 个拉丁字母,而 Rot8000 通过覆盖更多字符(如中文、符号等),增强了加密的灵活性和趣味性。
2025-07-22 09:22:58
1210
原创 【加解密与C】Rot系列(四)Rot47
Rot47 是一种基于 ASCII 码的字符替换算法,属于 Rot13 的扩展版本。它将可打印的 ASCII 字符(从 33 '!' 到 126 '~')通过移位 47 位进行替换。与 Rot13 仅处理字母不同,Rot47 支持数字、符号和字母的转换。
2025-07-21 09:30:52
358
原创 【加解密与C】Rot系列(三)Rot13
ROT18是一种基于ROT13的变体加密方法,结合了字母和数字的旋转替换规则。它将字母表旋转13位(与ROT13相同),同时对数字0-9旋转5位(即0→5、1→6,依此类推,9→0)。名称中的“18”可能源于字母(26个)和数字(10个)旋转位数的某种组合(如13+5),但实际规则是分开处理的。
2025-07-21 09:28:32
341
原创 【加解密与C】Rot系列(二)Rot13
Rot13(Rotate by 13 places)是一种简单的字母替换加密算法,属于凯撒密码(Caesar cipher)的特例。它将字母表中的每个字母替换为字母表中距离它13个位置的字母。例如,字母A替换为NB替换为O,以此类推。由于英文字母有26个字符,Rot13的特点是加密和解密使用相同的算法。
2025-07-18 09:05:09
373
原创 【加解密与C】Rot系列(一)Rot5
Rot5是一种简单的字母替换加密方法,专门用于数字0-9的替换。其原理是将每个数字向前或向后移动5位,实现加密和解密。例如,数字0加密后变为5,数字5解密后变为0。Rot5适用于简单的数字混淆,常见于需要隐藏明文数字但无需高安全性的场景,如临时验证码生成或轻度数据脱敏。与加密规则相同,因为Rot5是对称加密(即加密和解密使用相同规则)。
2025-07-18 09:03:52
522
原创 【加解密与C】Base系列(八)Base100
Base100 是一种基于 Unicode 表情符号的编码方式,也称为 "Emoji Encoding"。它将二进制数据转换为一系列表情符号,通常用于娱乐或非正式场景。Base100 并非标准编码,但在某些社区(如程序员或社交媒体用户)中流行。
2025-07-17 16:14:31
247
原创 【加解密与C】Base系列(七)Base62
Base62 是一种将数字转换为由 62 个字符组成的字符串的编码方式。它通常用于缩短数字表示,同时避免特殊字符或混淆字符(如0和O0-9A-Z和a-z。
2025-07-17 16:13:21
422
原创 【加解密与C】Base系列(六)Base45
Base45 是一种基于ASCII字符的编码方式,主要用于紧凑地表示二进制数据(如二维码中的内容)。它由45个可打印字符组成,包括数字、大写字母及部分符号,优化了数据压缩率和可读性。
2025-07-16 10:04:53
481
原创 【加解密与C】HMAC
HMAC(Hash-based Message Authentication Code)是一种基于哈希函数的消息认证码算法,用于验证消息的完整性和真实性。它结合了密钥和哈希函数(如 SHA-256、MD5 等),生成一个固定长度的认证码,确保消息未被篡改且来源可信。
2025-07-16 10:03:40
1189
原创 【加解密与C】Base系列(五)Base91
Base92是一种二进制到文本的编码方案,类似于Base64,但使用92个可打印ASCII字符(从!到,排除单引号和反斜杠其设计目标是比Base64更高效,尤其在短数据块中可减少编码后的长度。
2025-07-15 13:36:13
170
原创 【加解密与C】Base系列(四)Base91
Base91 是一种二进制到文本的编码方案,用于将二进制数据转换为可打印的ASCII字符。与Base64相比,Base91 的编码效率更高,可节省约12%的空间。其字符集包含91个可打印字符(A-Z、a-z、0-9及部分符号),避免使用可能引起冲突的特殊字符(如。
2025-07-15 13:34:37
377
原创 【加解密与C】CRC
CRC是一种用于检测数据传输或存储中错误的校验算法。它通过生成固定长度的校验值(通常为16位或32位)来验证数据的完整性,广泛应用于网络通信、文件存储等领域。
2025-07-14 13:13:30
471
原创 C Primer Plus 第6版 编程练习——第9章(下)
10.为了让程序清单9.8中的to_binary()函数更通用,编写一个to_base_n()函数接受两个参数,且第二个参数在2~10范围内,然后以第2个参数中指定的进制打印第1个参数的数值。例如,to_base_n(129,8)显示的结果为201,也就是129的八进制数。另外,函数要处理0的任何次幂都为0,任何数的0次幂都为1(函数应报告0的0次幂未定义,因此把该值处理为1)。要使用一个循环,并在程序中测试该函数。合并一个函数,以一个字符作为参数,如果该字符是一个字母则返回一个数值位置,否则返回-1。
2025-07-14 13:09:59
180
原创 【加解密与C】非对称加解密(五)SM9
SM9是中国国家密码管理局发布的标识密码算法标准(GM/T 0044-2016),属于基于身份的密码体系(IBC)。它通过用户的唯一标识(如邮箱、手机号)直接生成公钥,无需数字证书,简化了密钥管理流程。SM9支持数字签名、密钥交换、加密等功能,适用于物联网、电子政务等场景。
2025-07-11 13:39:40
431
原创 C Primer Plus 第6版 编程练习——第9章(上)
字符参数是待打印的字符,第1个整数指定一行中打印字符的次数,第2个整数指定打印指定字符的行数。5.编写并测试一个函数larger_of(),该函数把两个double类型变量的值替换为较大的值。4.两数的调和平均数这样计算:先得到两数的倒数,然后计算两个倒数的平均值,最后取计算结果的到数。编写一个函数,接受两个double类型的参数,返回这两个参数的调和平均数。6.编写并测试一个函数,该函数以3个double变量的地址作为参数,把最小值放入第1个变量,中间值放入第2个变量,最大值放入第3个变量。
2025-07-11 13:12:36
130
原创 【加解密与C】非对称加解密(四)SM2
SM2是中国国家密码管理局发布的椭圆曲线公钥密码算法标准,属于非对称加密体系,用于数字签名、密钥交换和公钥加密。其基于椭圆曲线密码学(ECC),安全性依赖于椭圆曲线离散对数问题的难解性。SM2标准推荐的椭圆曲线方程为:素数域特征:$p = \text{FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF}$
2025-07-10 16:38:30
1360
原创 C Primer Plus 第6版 编程练习——第8章
注意,在ASCII序列中,空格字符前面的字符都是非打印字符,要特殊处理这些字符。获得用户选择的选项后,程序提示用户输入两个数字,然后执行用户刚才选择的操作。程序使用 float 类型的变量存储用户输入的数字,如果用户输入失败,则允许再次输入。实际上,标点符号也不应该统计,但是现在暂时不同考虑这么多(如果你比较在意这点,考虑使用ctype.h系列中的ispunct()函数)。6.修改程序清单8.8中的get_first()函数,让该函数返回读取的第1个非空白字符,并在一个简单的程序中测试。
2025-07-10 16:34:52
720
原创 【加解密与C】非对称加解密(三)ECC椭圆曲线
与传统的RSA相比,ECC在相同安全级别下使用更短的密钥,计算效率更高,适用于资源受限的环境。ECC的安全性基于椭圆曲线离散对数问题(ECDLP):给定曲线上的点 (P) 和 (Q = k \cdot P),求解 (k) 是计算困难的。点加法用于定义曲线上两个点的加法运算,标量乘法则是通过重复点加法实现。椭圆曲线的数学定义通常表示为: [ y^2 = x^3 + ax + b ] 其中 (a) 和 (b) 是满足 (4a^3 + 27b^2 \neq 0) 的常数,以避免曲线出现奇异点。
2025-07-09 14:36:16
386
原创 C Primer Plus 第6版 编程练习——第7章(下)
少于或等于5磅的订单收取6.5美元的运费和包装费,5磅~20磅的订单收取14美元的远非和包装费,超过20磅的订单在14美元的基础上每续重1磅增加0.5美元。编写一个程序,在循环中用switch语句实现用户输入不同的字母时有不同的响应,即输入a响应的时让用户输入洋蓟的磅数,b是甜菜的磅数,c是胡萝卜的磅数,q是退出订购。程序要记录累计的重量。随后,程序应显示所有的购买信息:物品售价、订购的重量(单位:磅)、订购的蔬菜费、订单的总费用、折扣(如果有的话)、运费和包装费,以及所有的费用总额。续150美元为20%
2025-07-09 14:21:33
559
原创 C Primer Plus 第6版 编程练习——第7章(上)
输入结束后,程序应报告用户输入的偶数(不包括0)个数、这些偶数的平均值、输入的奇数个数及其奇数的平均值。4.使用if else语句编写一个程序读取输入,读到#停止。用感叹号替换句号,用两个感叹号替换原来的感叹号,最后报告进行了多少次替换。1.编写一个程序读取输入,读到#字符停止。然后报告读取的空格数、换行符数和所有其他字符的数量。2.编写一个程序读取输入,读到#字符停止。然后报告读取的空格数、换行符数和所有其他字符的数量。6.编写程序读取输入,读到#停止,报告ei出现的次数。本章习题共11题,分上下两篇。
2025-07-08 14:06:44
158
原创 【加解密与C】Base系列(三)Base85
Base85(也称为 Ascii85)是一种二进制到文本的编码方案,用于将二进制数据转换为可打印的ASCII字符。它的效率高于Base64,但生成的字符串可能包含特殊字符(如引号或反斜杠),需在特定场景(如JSON)中谨慎使用。
2025-07-08 13:56:19
317
原创 【加解密与C】非对称加解密(二)ELGamel
ELGamel 是一种基于离散对数问题的公钥加密算法,由 Taher Elgamal 在 1985 年提出。它是 Diffie-Hellman 密钥交换协议的扩展,广泛应用于数字签名和加密场景。ELGamel 的安全性依赖于有限域上离散对数问题的计算难度。
2025-07-07 14:08:19
906
原创 【加解密与C]非对称加解密(一)RSA
RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,广泛应用于数字签名、密钥交换和数据加密。其安全性基于大整数分解的困难性。
2025-07-07 14:03:33
300
原创 【加解密与C】对称加密(四) RC4
RC4(Rivest Cipher 4)是由Ron Rivest在1987年设计的流密码算法,广泛应用于SSL/TLS、WEP等协议中。其核心是通过密钥调度算法(KSA)和伪随机生成算法(PRGA)生成密钥流,与明文进行异或操作实现加解密。
2025-07-04 10:46:24
364
原创 【加解密与C】对称加密(三)3DES
3DES(Triple Data Encryption Standard)是DES算法的加强版本,通过三次DES加密提升安全性。由于DES的56位密钥易受暴力破解,3DES采用两或三个不同的密钥进行多次加密,有效增加密钥长度至112或168位,兼顾兼容性和安全性。
2025-07-04 10:44:33
133
原创 【加解密与C】HASH系列(三)SM3
SM3是中国国家密码管理局发布的密码杂凑算法标准,属于商用密码体系中的哈希算法。其输出为256位(32字节)固定长度的哈希值,安全性对标国际通用的SHA-256,但设计更注重抗碰撞性和效率,适用于数字签名、消息认证等场景。
2025-07-03 13:29:37
838
原创 C Primer Plus 第6版 编程练习——第6章(下)
例如,第二个数组的第4个元素的值是第一个数组前4个元素之和,第二个数组的第5个元素的值是第一个数组前5个元素之和(用嵌套循环可以完成,但是利用第二个数组的第5个元素是第二个数组的第4个元与第一个数组的第5个元素之和,只用一个循环就能完成任务,不需要使用嵌套循环)。最后,使用循环显示两个数组的内容,第一个数组显示成一行,第二个数组显示在第一个数组的下一行,而且每个元素都与第一个数组各元素相对应。13.编写一个程序,创建一个包含8个元素的int类型数组,分别把数组元素设置为2的前8次幂。
2025-07-03 13:25:27
460
原创 【加解密与C】HASH系列(二) SHA
SHA(Secure Hash Algorithm)是由美国国家安全局(NSA)设计的一系列密码散列函数,用于将任意长度的数据转换为固定长度的散列值。SHA家族包括SHA-1、SHA-2(含SHA-256、SHA-384、SHA-512等)和SHA-3,广泛应用于数据完整性验证、数字签名和密码学安全领域。
2025-07-02 17:13:30
793
原创 C Primer Plus 第6版 编程练习——第6章(上)
6.编写一个程序打印一个表格,每一行打印一个整数、该数的平方、该数的立方.要求用户输入表格的上下限.使用一个for循环.1.编写一个程序,创建一个包含26个元素的数组,并在其中存储26个小写字母.然后打印数组中的所有内容.打印这样的图形,要根据用户输入的字母来决定.例如,上面的图形是用户输入E后的打印结果.如果你的系统不使用ASCII或其他以数字顺序编码的代码,请参照练习3的方案解决。如果你的系统不使用ASCII或其他以数字顺序编码的代码,请参照练习3的方案解决。本章题比较多,有18题,分上下两部分。
2025-07-02 17:10:41
358
原创 【加解密与C】HASH系列(二)MD5
MD5(Message Digest Algorithm 5)是一种广泛使用的哈希算法,由Ronald Rivest于1991年设计。它将任意长度的输入数据转换为固定长度(128位,即32个字符)的哈希值,常用于验证数据完整性或存储密码(现已被更安全的算法取代)。
2025-06-30 10:17:05
414
CMake Cookbook中文版-自动化编译系统的全面指南及应用
2025-01-15
银河麒麟高级服务器操作系统中的RPM包构建流程和技术详解
2025-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人