首页
社区
课程
招聘
高强度的壳:双进程自己debug自己的壳 如何是好?[求助]
发表于: 2005-3-5 22:36 5382

高强度的壳:双进程自己debug自己的壳 如何是好?[求助]

2005-3-5 22:36
5382
小弟初学脱壳不久,前几天朋友要我帮忙看一个软件
本想练手, 谁知道碰到麻烦了, 我用ollydlg1.1操作.
当时用fi和peid0.92都看到的是nothing find,然后就手动分析,
今天下了个新的peid0.93,才知道是Armadillo 3.78 -> Silicon Realms Toolworks这样显示的, 我就下了armadillo3.75c 3.77 3.78 3.40发现他们加的壳都被认为是3.78, 而且参照文章
http://www.pediy.com/bbshtml/BBS6/pediy6691.htm
也不能判断出aramd的版本.

这样忙呼了几天, 最终还是没把壳给脱出来.
大概知道该壳有下列几点变化技巧.
1: IsDebuggerPresent的检测. 本来我想下isdebuggerpresent然后直接修改eax
   ==0, 设置log断点并且执行命令的方式, 可是不会. 所以用插件屏蔽掉了
2: softice等的检测, 因为r3的不好调,后来我想试着用r0的softice调,结果
  也被检测出来了.
3: 繁多的花指令 垃圾指令. 而且因为这个的存在, 开始不能下段点,那怕
   bp ReadProcessMemory 这样的log断点都不行 必须等
   程序执行一点后在下, 要不就是 unable debug了, 不知道为什么.
3:  程序分快解密, 而且一个指令数据被多次解密才是最终的指令.
4:  双进程, 自己debugactiveprocess, 这点我看教程好象都会这样
    但我是2000没有debugactiveprocessstop, 要脱离挂钩也不行, 只要采用
    教程中的openmutexa的方法, 让他返回1,把自己做子进程打开.
5:  壳带注册程序, 但加密好象很复杂. 我把自己做子进程跟踪了一会
    发现即便修改了返回值, 又弹出另外一个框要输入密码, 又修改这个
    返回值(这里到可以用getwindowtexta得到),又回到了第一个要输入
    序列号的地方,好象就是即便都成功了, 还是死循环. 好象这些关键
    进入真正的主程序的代码还没有生成一样,
    跟踪里面的时候发现有一些查表换算的地方,表都是很规则字符比如
    0123456789ABCDEF等的, 然后如果是0则offset为0则是0好象这个表
    还没有被初始化.
6:  我看教程,应该是还有代码,数据没有被解密出来. 因为没有了父进程来
    传送解密的数据。 好象程序经常会产生异常,然后父进程debug到了
    就解密,然后continuedebugevent可惜我跟踪不出来
7:  另外程序中还好象发送windows message通信, 我看到了类似发送
    wm_user+10这样的消息代码,好象还有DDE通信, filemapping通信的方式
8:  父进程又有2个线程, 他们好象也有检测的过程.
9:  经常在一段关键数据前, 把自己线程优先级别提高到最高,然后运行一段
     复杂代码,然后才降下来, 这里面的代码根本不好跟踪.
10:  大量的getlocaltime, getsystemtime, gettickcount来判断程序运行的
    时间差, 来判断是否被调试了。 我本想让这三个函数返回同一个值,
    可惜不知道怎么操作.另外者3个函数好象用到了加解密换算中
11: 程序有大量的读取子进程ReadProcessMemory, WaitForDebugEvent这样的
    循环,可惜我跟不出来

希望大家能给点提示, 或者可以帮我看下. 在这里小弟谢谢了.
软件在 http://61.143.0.184/ad.rar 这里可以下..

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
看雪论坛精华合集
搜索 Armadillo
2005-3-5 22:47
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
谢谢老大这么快就回复:)
我这有那个20多m的全集, 按照他的步骤一点点来的。
但是有些地方有很多区别, 比如教程上说这个时候
父进程会想字进程WriteProcessMemory, 但我的就是不写。
比如教程上说可以跟踪VirtualAllocEx,到什么时候返回,
magic jump在哪等, 但我按照操作就是找不到。。
技术不行, 理解有限。 所以还是来问问。。
2005-3-5 23:02
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
必须输入key才能运行的Armadillo保护程序“无法”脱壳
要能试运行

搞到key再脱壳
否则不必浪费时间
2005-3-5 23:31
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
5
我不能搞懂那个注册的地方是不是arm带的。
因为我看他的类都是标准的#32770, button edit等,
好象跟arm带的SRTSmartDlg不是一个?
另外为啥没有key就没办法脱呢?
难道程序需要key做code的解密换算? 这个key不是在arm中存在的
吗? 要不他怎么知道我是否输入正确了呢?
fly大哥可以讲讲为什么吗?
我不清楚是否需要输入key, 因为正常运行的时候只有个输入sn的地方,然后我做子进程处理的时候跳过了又要输入key。这个对话框才是英文的arm带的。 前面个输入用户名和密码的是中文的,
我怀疑是不是我随意改跳转所以导致了要输入key? 另外如果我
debug父进程,然后修改自进程的跳转(先前调试字进程记下的
代码)发现不需要输入key了。 而是一直在第一个输入用户名
和密码的地方打转了。。
2005-3-5 23:39
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
6
没有正确的SN,Armadillo不会解码
如果你能搞定Armadillo的算法当然可以

你搜索一下论坛,这种情况的帖子不少
2005-3-5 23:41
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
7
我就是在这里难住了。
因为他这里提示输入用户名字和密码的地方是中文,所以我不知道
arm是不是能制作出这个效果。 好比

本机序列号 XXXX-XXXX
请输入用户名_____
请输入密码_____
确定   取消

遮掩的形式. 而且我跟踪程序好象没有发现有解码的地方
就是在两个窗体消息循环来回打转
我搜索的论坛的结果, 都是arm提示的信息呀, 而我这个
信息好象是作者本身制作的窗体
另外,显示这个窗体的时候, 标准的arm  Loading...  窗体
也存在, 这能说明什么吗?
2005-3-5 23:47
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
8
你可以下载一个Armadillo自己设置注册选项加壳看看
2005-3-5 23:52
0
雪    币: 1913
活跃值: (15)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 jjnet 发布
我就是在这里难住了。
因为他这里提示输入用户名字和密码的地方是中文,所以我不知道
arm是不是能制作出这个效果。 好比

本机序列号 XXXX-XXXX
........


VB

可以的。只要有SDK,作者可以自己修改的。
2005-3-6 17:19
0
雪    币: 97697
活跃值: (200734)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 Feisu 发布


VB

可以的。只要有SDK,作者可以自己修改的。


Thinks you to forum!!!
2005-3-6 17:47
0
游客
登录 | 注册 方可回帖
返回
//