标 题: 【原创】小小菜鸟爆破IphoneBackupextractor V3.08
作 者: Wmbit(wzpyh)
时 间: 2011-10-25,20:02
在此要先感谢下
【原创】DOTNET动态调试破解Spoon,及MSI安装包文件替换技术
的作者chenxiaolu 发的帖,让我受益匪浅!
前言
玩Iphone的朋友对这个东西应该并不陌生,它可以把电脑里的Iphone备份文件提取自己所需的东西出来。
作为一个超级潜水艇0 0(看我注册时间就知道了),逛了那么久的看雪。。觉得是该笨鸟飞起来了恩。。
废话不说了,进入正题。。
工具使用:
CFF Explorer
Simple Assembly Explorer
ILSPY
1、 打开软件我们可以看到有个注册按钮在主界面
用Reflector打开软件,显示错误,看来软件动过手脚。。
改用Simple Assembly Explorer+ILSPY 顺利打开~
在Form类的MainForm,看到许多函数都被混淆了
尽管如此,硬着头皮用ILSPY分析下代码,发现个button叫btnButton
点右键Analyze一下恩。
看到这四个方法调用了BtnRegister,点第一个进去看看。。看到了一个东西~(运气太好了- -)
当case 为2的时候,注册按钮就会隐藏起来,看来这里是关键,因为一般注册成功了才会把它隐藏起来。那么看下是怎么才能到case 2的- -。。
代码:
case 2: { YCAgON0yw60m63HqxL.nXwlNs0Yvy.btnRegister.Hide(); num = 15; break; }
在下面点看到了这个
代码:
case 13: { if (!YCAgON0yw60m63HqxL.ARRlToEtRO) { return; } num = 2; break; }
那么true的代码在哪呢?在Case 4那。。
代码:
case 4: { YCAgON0yw60m63HqxL.ARRlToEtRO = true; num = 9; break; }
代码:
public static void ADBlBnyecQ() { int arg_199_0 = 12; if (YCAgON0yw60m63HqxL.GqJHamoA9rMXWwobD70()) { goto IL_10; } string text2; while (true) { IL_199: string text; int num; RegistryHelper registryHelper; switch (arg_199_0)
代码:
0 L_0000: ldc.i4 12 1 L_0005: call System.Boolean Hx4BCgCK7VXi5M2Ni4.YCAgON0yw60m63HqxL::GqJHamoA9rMXWwobD70() 2 L_000a: brfalse 96 -> switch 29, 65, 23, 78, 14, 19, 50, 4, 56, 87, 29, 45, 8, 45, 100, 108
查询Gerneral页可知道
代码:
/* Token: 0x060002df */ /* RVA: 0x2af58 */ .method public hidebysig static Void ADBlBnyecQ() .maxstack 6
开启CFF Explorer 打开文件,在Address Converter 填入RVA显示如下

(此图是已经改过值后的)
20 0C 即0x0C=12 把0C 改成04,保存,
软件运行。。。Done!
后话:
只用改一个字节就搞定它了=。= ,但前后分析却花了半天。。。逆向入门真不容易啊