当前位置:网站首页>C# 谁改了我的代码
C# 谁改了我的代码
2022-08-04 14:48:00 【林德熙】
本文告诉大家一个特殊的做法,可以修改一个字符串常量
我们来写一个简单的程序,把一个常量字符串输出
private const string str = "lindexi";
static void Main(string[] args)
{
Foo();
Console.WriteLine(str);
}其中的 Foo 是其他的函数,大家可以猜到输出是 lindexi ,但是,实际上把Foo调用函数添加之后,输出是 Lindexi 被大写了。那么这时 Foo 做了什么?
Foo 做的就是 C# 字符串首字符大写
public static unsafe void Foo()
{
fixed (char* ptr = str)
{
*ptr = char.ToUpper(*ptr);
}
}虽然出现了问题,但是找到问题很简单,如果这时需要做一个安全有关的。让别人看到源代码也不知道怎么使用,那么就可以使用这个科技,下面就是显示技术的时候
我把 Foo 做一些修改,把 str 变量去掉,这样大家就难以通过搜索变量引用找到了这个函数。但是我在其他的某个地方使用了这个常量字符串,于是就把上面的 str 修改为 “lindexi” 。大家也许会想,这是两个变量,对他做什么修改也不会对之前的 str 有什么影响。实际上,请跑一下下面的代码。
public static unsafe void Foo()
{
fixed (char* ptr = "lindexi")
{
*ptr = char.ToUpper(*ptr);
}
}这时输出 str 结果是 Lindexi ,因为编译器把相同的常量视为同一个地址,这样修改一个地方的常量就可以修改其他地方的。所以可以写的是一个常量,实际上这个常量在另一个地方被修改。
如果我代码很多,在某个地方使用了反射,反射一个方法,这个方法是修改一个常量的值,常量是写自己写的,没有引用。这时可以发现代码执行就可以更改之前的字符串值。实际上不只字符串,其它的常量也可以修改。多使用这些技术,可以让看代码的人成为强大的杀人狂。
这个方法是不推荐在一般情况使用,因为谁都不能说没有其他地方使用一样的字符串。
边栏推荐
- The Internet of things application development trend
- 华为云 & 达达,帮有情人“一键送达”
- 饿了么智能头盔专利获授权,进一步提升骑手安全保障
- CF1527D MEX Tree(mex&树&容斥)
- 第十六章 源代码文件 REST API 教程(一)
- RS|哨兵二号(.SAFE格式)转tif格式
- 【历史上的今天】8 月 4 日:第一位图灵奖女性得主;NVIDIA 收购 MediaQ;首届网络安全挑战大赛完成
- Centos7 install mysql version rapidly
- 【 HMS core 】 【 Media 】 online video editing service 】 【 material can't show, or network anomalies have been Loading state
- [机缘参悟-60]:《兵者,诡道也》-1-开篇:“死“与“生“都是天道
猜你喜欢

Basic Introduction for PLSQL

利用决策树找出最优特征组合

leetcode: 250. Count subtrees of equal value
![[LeetCode] 38. Appearance sequence](/img/d6/092796b57844d5d30f3ed123a1b98a.png)
[LeetCode] 38. Appearance sequence

Zheng Qing freshmen school competition and middle-aged engineering selection competition

郑轻新生校赛和中工选拔赛题解

技术分享| 融合调度系统中的电子围栏功能说明

leetcode:255 验证前序遍历序列二叉搜索树

技术分享| 小程序实现音视频通话

leetcode:241. 为运算表达式设计优先级
随机推荐
理论篇1:深度学习之----LetNet模型详解
LeetCode_模拟_中等_498.对角线遍历
Why does the decimal point appear when I press the space bar in word 2003?
Zheng Qing freshmen school competition and middle-aged engineering selection competition
本周讨论用户体验:Daedalus 的 Nemo 加入 Ambire,探索加密海洋
郑轻新生校赛和中工选拔赛题解
Win10无法访问移动硬盘怎么解决
leetcode:212. 单词搜索 II
Cisco-小型网络拓扑(DNS、DHCP、网站服务器、无线路由器)
饿了么智能头盔专利获授权,进一步提升骑手安全保障
vim 常用操作命令
期货开户之前要谈好最低手续费和交返
leetcode:253. 至少需要多少间会议室
leetcode:250. 统计同值子树
X射线掠入射聚焦反射镜
我爱七夕哈哈哈
FRED应用:毛细管电泳系统
数据库恢复
using关键字学习
Rust from entry to proficient 04-variables