首页
社区
课程
招聘
[原创]用PEBrowse对.Net程序进行动态调试
发表于: 2006-4-25 11:01 29551

[原创]用PEBrowse对.Net程序进行动态调试

2006-4-25 11:01
29551

用PEBrowse对.Net程序进行动态调试
tankaiha[NE365]@www.vxer.cn
2006.04.25

    本文主要讲了通过在.Net平台下动态调试应用程序来破解程序的一些思路和方法,研究的对象是Code Library .Net(Access),版本号13.8.2294.11793。
一、    调试工具的选择
我通常在.Net平台下使用的动态调试方法有两种:一是用ildasm将程序反汇编,然后进行必要修改(如去除强名称),再用ilasm汇编为带debug信息的,然后用Framework SDK自带的GuiDebug进行调试。但是这种方法我用的还不多,因为我机上没有1.1版本的SDK,而现在更多的程序是1.1的,所以我更喜欢用第二种:用第三方调试软件(类似win32下的Ollydbg)来直接调试,这里使用的是PEBrowse Professional Interactive。具体使用方法结合例子在后面再说。

二、    静态分析
    拿到一个程序我们首先要做的就是静态分析,看看有没有敏感信息,以便找到关键代码。用Reflector打开后,发现程序已经混淆,代码直接是看不到的。现在的.Net程序基本都做过混淆,在名称混淆方面做的比较变态的是把名称混淆为不可打印字符,这样很多反汇编程序出来的代码都会出错,即使不出错也分不清谁跟谁了!只能用ildasm直接反汇编成il代码了。之后打开CodeLib.il,发现流程也混淆了,跟踪一个函数发现两三句指令就是一个跳转,非常不爽。
    先来看看有没有什么明文的敏感信息吧,通过搜索il文件,我们发现了“User”“Keycode”两个关键字段,代表什么显而易见,就是开机要我们输入的用户名和密码。然后不管你输入对错都是弹出“感谢注册”的对话框,这种形式通常注册信息被保存在文件或者注册表中,果然,我们在文件中发现了“Software\VB and VBA Program Settings\fishCodeLib”字段,这是信息保存的位置。
    但是还有一些字符串没有搜到,比如第一个窗口中的“This is an unresigered copy”。仔细看一下,代码中有很多bytearray,比如:
ldstr      bytearray (46 D8 57 DF 55 E6 5C ED 06 F4 4C FB 53 02 FD 08
                  3B 10 45 17 F4 1D 46 25 3C 2C 3D 33 2D 3A 2C 41
                  2B 48 32 4F 30 56 1E 5D 28 64 18 6B 14 72 CD 78
                  0D 80 16 87 14 8E 1A 95 CC 9B )
ldc.i4     0x6e66d7f2
call string xed3d7768b7546353.x7846ebd83ad1c299::_bc22ed13a5229081(string, int32)
    看来字符串都被加了密。写个il程序解码,代码就用程序中的_bc22ed13a5229081(string,int32),具体代码见附件。解码后得到这段字符串正是“This is an unresigered copy”。同理我们可以将其它的相关字符串统统解码。

三、    静态流程分析
首先在il文件中静态跟一下流程,但是经过混淆的代码看起来实在是痛苦,鼠标的滚轮没少受折磨。搜一下文件中的“Keycode”,发现太多地方使用了,没有办法一下确定哪一处是关键点。(这么多关键点,看来爆破是没折了!)但至少我们发现一个关键信息:
bool CodeLib.x83a1ac2c48984168::x6ae105ff7a55905e
是判断是否注册的关键变量,根据吗,看下面的代码:

--------------------------------------------------------------------------------


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (37)
雪    币: 228
活跃值: (1660)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2006-4-25 11:04
0
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
支持一下
2006-4-25 11:29
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
.NET 是以后的趋势,楼主是先行者呀!!
支持一个。文中提到的PEBrowse Professional Interactive哪里有下?
2006-4-25 13:12
0
雪    币: 9899
活跃值: (2301)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好文,学习.
2006-4-25 13:44
0
雪    币: 2506
活跃值: (1030)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
6
最初由 向日葵 发布
支持一个。文中提到的PEBrowse Professional Interactive哪里有下?

http://www.smidgeonsoft.com/download/PEBrowseDbg.zip
要用代理。
2006-4-25 13:57
0
雪    币: 228
活跃值: (1660)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 CCDebuger 发布
http://www.smidgeonsoft.com/download/PEBrowseDbg.zip
要用代理。


直接还是可以下载的。不过不稳定。
2006-4-25 13:59
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
8
学习!
2006-4-25 14:15
0
雪    币: 209
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 CCDebuger 发布
http://www.smidgeonsoft.com/download/PEBrowseDbg.zip
要用代理。


为何不直接放到本站呢?
2006-4-25 15:32
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
10
最初由 CCDebuger 发布
http://www.smidgeonsoft.com/download/PEBrowseDbg.zip
要用代理。

直接下不来,可以发个附件么?谢谢斑竹
2006-4-25 15:52
0
雪    币: 98824
活跃值: (201059)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
刚看到tankaiha的贴,深感荣幸!

I LIKE THIS GAME!
2006-4-25 15:55
0
雪    币: 229
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
牛~~~~~~~~~~
2006-4-25 16:00
0
雪    币: 98824
活跃值: (201059)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
13
这是我第一次看到PEBrowse Professional Interactive的应用.

I TRY!

我转载到EXETOOLS.
2006-4-25 16:03
0
雪    币: 10734
活跃值: (2449)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
支持  嘿嘿
2006-4-25 16:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
谢谢分享,学习一下
2006-4-25 16:38
0
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
16
sorry,停电一天,所以现在才有时间修正。图4发错了,原图是输入用户名和注册码的图,应该是内存数据dump的图。还有两个错别字。

偶是GPRS,上传图片就要了我的老命了,别说上传程序了。

btw:工具版是我常去的一个版,linhanshi发的工具我都看,但更重要的是大家要用起来,比如这个PEBrowse和编写il的xacc.ide就不错。
2006-4-25 19:52
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
17
学习一下
为了.net 要装 FrameWork。怕
2006-4-25 21:09
0
雪    币: 224
活跃值: (75)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
18
今天看了2篇.net 好文 一定要去试试。
2006-4-25 21:51
0
雪    币: 4925
活跃值: (2378)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
19
我用的是另外2种工具。因为你说的这个软件我也第一次见别人使用。
我自己使用的2个工具是自己琢磨出来的。
2006-4-25 22:03
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
20
今天两篇好文,一静一动,拿net程序开刀

很好!都收藏了

2006终于盼到好文了
2006-4-25 23:36
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
21
下载了(2006/04/21) Code Library .NET Professional 13.8.2302  ,好像输入你的注册码不行,可能版本的区别算法有变化,结果退出以后再怎么都运行不起来了,点击无反应。

我用你介绍的PEBROWER工具加载,出现kernel32几个异常之后就退出了,重新安装也无济于事。还怀疑是net平台(虽然作者说程序要求1.1即可),特意升级到2.0,结果还是一样。

难道.2302加入了anti?
2006-4-26 01:52
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
把文章做个WORD文档打包下载吧,直接复制的没图片
2006-4-26 09:33
0
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
23
最新的13.8.2306.33660已经改变了注册算法了,但是只改变了一点点。注册码就不发了,用上述的方法是完全可以跟出来的。



注意一点:有网络验证。所以防火墙报警时不要让CodeLib连接网络。

至于anti,我还没发现。
2006-4-26 10:46
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
24
最初由 tankaiha 发布
最新的13.8.2306.33660已经改变了注册算法了,但是只改变了一点点。注册码就不发了,用上述的方法是完全可以跟出来的。



注意一点:有网络验证。所以防火墙报警时不要让CodeLib连接网络。
........


我当时就禁止codelib联网了,也用你的办法试了,好像一加载就会看到那个vb什么的dll,进入其interact类选GetString函数Add Breakpoint,照你方法F5走,结果没到断点就异常了,然后退出。

我不知道是否是我系统的原因,只好重新安装codelib的10.0版了,免费,用了很久了。
2006-4-26 16:52
0
雪    币: 50
活跃值: (145)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
25
学学,好东西
2006-4-26 19:44
0
游客
登录 | 注册 方可回帖
返回
//