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

推荐订阅源

IT之家
IT之家
博客园 - 聂微东
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
博客园 - 司徒正美
爱范儿
爱范儿
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
博客园 - 【当耐特】
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
人人都是产品经理
人人都是产品经理
V
V2EX

博客园 - 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:如若你是该组件的作者,请大可放心,获取组件中资源文件的内容只是用于参考学习,不会用于任何商业用途。