本帖最后由 66006630 于 2020-9-17 07:16 编辑
也脱壳了
也找到关键函数了
现在就是要修改一个指令
程序是C# 写的,我使用dnspy对其进行编辑。
原始的反编译出来的方法见下图:
该方法返回了一个字符串,现在就是希望图片中的方法能返回一个空字符串。
我在dnspy里使用了“编辑方法”,但是会报错。看图
我注释掉了一个数组,并写了一个新的空数组,编译会报错。
我也尝试过把最后return 改了,但是也是报同样的错。
我进入IL指令编辑,如下:
[IL] 纯文本查看 复制代码
0 0000 ldarg.0
1 0001 call uint8[] Class92/Class93::smethod_0(int32)
2 0006 stloc.0
3 0007 newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
4 000C stloc.1
5 000D ldc.i4.0
6 000E stloc.2
7 000F br.s 41 (0046) ldloc.2
8 0011 ldc.i4.2
9 0012 newarr [mscorlib]System.Byte
10 0017 dup
11 0018 ldc.i4.0
12 0019 ldloc.0
13 001A ldloc.2
14 001B ldelem.u1
15 001C ldc.i4 0xFF
16 0021 xor
17 0022 conv.u1
18 0023 stelem.i1
19 0024 dup
20 0025 ldc.i4.1
21 0026 ldloc.0
22 0027 ldloc.2
23 0028 ldc.i4.1
24 0029 add
25 002A ldelem.u1
26 002B ldc.i4 0xFF
27 0030 xor
28 0031 conv.u1
29 0032 stelem.i1
30 0033 stloc.3
31 0034 ldloc.1
32 0035 ldloc.3
33 0036 ldc.i4.0
34 0037 call char [mscorlib]System.BitConverter::ToChar(uint8[], int32)
35 003C callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(char)
36 0041 pop
37 0042 ldloc.2
38 0043 ldc.i4.2
39 0044 add
40 0045 stloc.2
41 0046 ldloc.2
42 0047 ldloc.0
43 0048 ldlen
44 0049 conv.i4
45 004A blt.s 8 (0011) ldc.i4.2
46 004C ldloc.1
47 004D callvirt instance string [mscorlib]System.Object::ToString()
48 0052 ret
但是实在不会,麻烦各位大佬帮忙看看,目的就是要让这个方法返回一个空字符串。
谢谢!
|