惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

博客园 - T.t.T!Ck.¢#

博文阅读密码验证 - 博客园 博文阅读密码验证 - 博客园 人工神经网络(Artificial Neural Netwroks)笔记-模拟退火算法(Simulated Annealing) 人工神经网络(Artificial Neural Netwroks)笔记-径向基函数(Radial Basis Function- RBF) 人工神经网络(Artificial Neural Netwroks)笔记-粒子群优化(Partical Swarm Optimization - PSO) 识别地图上的地名-- 笔记一 人工神经网络(Artificial Neural Netwroks)笔记-基本的非确定性统计训练算法 - T.t.T!Ck.¢# 人工神经网络(Artificial Neural Netwroks)笔记 人工神经网络(Artificial Neural Netwroks)笔记-消除样本顺序的BP算法 博文阅读密码验证 - 博客园 人工神经网络(Artificial Neural Netwroks)笔记-连续多输出感知器算法 人工神经网络(Artificial Neural Netwroks)笔记--离散多输出感知器训练算法 博文阅读密码验证 - 博客园 人工神经网络(Artificial Neural Netwroks)笔记-离散单输出感知器算法 Mutual Information 互信息的应用 BeIT Memcached web页面列表的内容抽取 文本相似度计算--余弦定理和广义Jaccard系数 倒排序索引实验
坏事做尽--通过修改IL获取某资源文件 - T.t.T!Ck.¢# - 博客园
T.t.T!Ck.¢# · 2007-07-20 · via 博客园 - T.t.T!Ck.¢#

事情源于想获取某个非开源组件里面的某个资源文件的内容
该资源文件为一个二进制文件,通过某种方式解析出来之后将会是一行行的字符串
我就是想拿到这些字符串

目的很明确
开始准备工具 ildasm,ilasm,Xenocode Fox
该组件已经通过Xenocode 混淆过了,但是不代表不能看,只要细心分析还是能看出端倪。
通过Xenocode Fox 分析得到文件资源文件的内容通过解析之后被加载到
private  Dictionary<string,ushortl9Ej)T;  中,
用ildasm获得该组件的IL文件,把private  Dictionary<string,ushortl9Ej)T; 的private改为public

去掉文件的强名
去掉强名的方法相当简单,把.publickey 整个去掉就是了
之后该IL才可以通过ilasm还原为DLL文件

本以为这样就可以得到内容了
但是非常遗憾。。
不知道是我的问题还是 .NET命名的 问题。。。l9Ej)T 这样的名称居然不能出现,但是该DLL文件还是可以正常使用。。。  -_-!!!

既然这样不能得到该 类成员的访问权限的话。。那么换一种方式
为该类增加一个方法
嘿嘿。。邪恶的开始。。。

因为对IL不是很熟识,所以需要有参考代码。
首先自己写一个简单的C#代码
如下
Dictionary<string, ushort> ol9EjT;
public Dictionary<string, ushort> getyou()
        {
            return ol9EjT;
        }

将自己写的DLL反编译为IL

IL代码为
.method public hidebysig instance class [mscorlib]System.Collections.Generic.Dictionary`2<string,uint16>
          getyou() cil managed
  {
    // 代码大小       12 (0xc)
    .maxstack  1
    .locals init (class [mscorlib]System.Collections.Generic.Dictionary`2<string,uint16> V_0)
    IL_0000:  nop
    IL_0001:  ldarg.0
    IL_0002:  ldfld      class [mscorlib]System.Collections.Generic.Dictionary`2<string,uint16> '破解'.testsssssssssssss::ol9EjT
    IL_0007:  stloc.0
    IL_0008:  br.s       IL_000a

    IL_000a:  ldloc.0
    IL_000b:  ret
  } // end of method testsssssssssssss::getyou

完全将该代码复制为 目标组件的IL代码中
再一次编译为DLL

嘿嘿 组件中多了一个 getyou()的方法
嘿嘿 拿到该组件的某个资源文件的内容了
邪恶终止。

PS:如若你是该组件的作者,请大可放心,获取组件中资源文件的内容只是用于参考学习,不会用于任何商业用途。