好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 umldnnl 于 2014-11-13 07:15 编辑
先小小的唠叨几句,08年的时候注册了论坛ID,后来因为学业忙,一直没时间,号被收回了,现在时间慢慢的多了,在论坛开放的时候,重新注册了一个ID
首先先谢谢52,说实话,在52可以学到很多的东西
根据要求新用户需要发贴,本来想发一个自己做的小软件的,可是仔细一想,还是不要在大牛的面前班门弄斧,我也不想就这样敷衍了事
so 发一个asp脱壳的经验分享
好吧,开始正题
这里注意说下如何Patch Key,毕竟是最早的版本,强度并不难,找oep和修复iat我简的说下
1.OEP:
用最后一次异常法跟踪到OEP
IAT修复
处理顺序:1.加密IAT 2.无加密IAT
在加密的IAT地址下断:
- 00D8F485 /72 59 jb short 00D8F4E0
- 00D8F487 |0F84 C5000000 je 00D8F552
- 00D8F48D |48 dec eax
- 00D8F48E |74 50 je short 00D8F4E0
- 00D8F490 |48 dec eax
- 00D8F491 |0F85 C4000000 jnz 00D8F55B
- 00D8F497 |8A06 mov al, byte ptr [esi]
- 00D8F499 |8845 FF mov byte ptr [ebp-1], al
- 00D8F49C |46 inc esi
- 00D8F49D |33DB xor ebx, ebx
- 00D8F49F |8A5D FF mov bl, byte ptr [ebp-1]
- 00D8F4A2 |8BCB mov ecx, ebx
- 00D8F4A4 |8D85 FFFEFFFF lea eax, dword ptr [ebp-101]
- 00D8F4AA |8BD6 mov edx, esi
- 00D8F4AC |E8 AB4FFFFF call 00D8445C
- 00D8F4B1 |6A 0A push 0A
- 00D8F4B3 |B9 1239D900 mov ecx, 0D93912
- 00D8F4B8 |8BD3 mov edx, ebx
- 00D8F4BA |8D85 FFFEFFFF lea eax, dword ptr [ebp-101]
- 00D8F4C0 |E8 D7CEFFFF call 00D8C39C
- 00D8F4C5 |8DB5 FFFEFFFF lea esi, dword ptr [ebp-101]
- 00D8F4CB |56 push esi
- 00D8F4CC |8B45 0C mov eax, dword ptr [ebp+C]
- 00D8F4CF |50 push eax
- 00D8F4D0 |E8 17FCFFFF call 00D8F0EC
- 00D8F4D5 |E8 7EFEFFFF call 00D8F358 //NOP
- 00D8F4DA |8B17 mov edx, dword ptr [edi]
- 00D8F4DC |8902 mov dword ptr [edx], eax
- 00D8F4DE |EB 7B jmp short 00D8F55B
有几个无法修复的手动跟踪就行了,这版本IAT简单
4
这里只说方法,单步跟就不说了
1.利用异常法,当堆栈出现硬件ID时:
- 0012D738 0012D740 指向下一个 SEH 记录的指针
- 0012D73C 00D90217 SE处理程序
- 0012D740 0012FFE0 指向下一个 SEH 记录的指针
- 0012D744 00D90A6F SE处理程序
- 0012D748 0012FF90
- 0012D74C 00D80000
- 0012D750 00D60000
- 0012D754 00D90038
- 0012D758 00000000
- 0012D75C 00DA717C ASCII "jdVaiACwTX8=" //硬件ID
- 0012D760 00000000
- 0012D764 00000000
- 0012D768 00000000
- 0012D76C 00000000
2.打开内存视图(Alt+m),搜ascii字符串"TBlockOperator"
记下地址,如:00D8C925.
注意:完整的字符串是"TBlockOperator"
所以要00D8C925-1=00D8C924
3.在汇编窗口右键--查找--所有常量,写入地址:00D8C924
- 0012D738 0012D740 指向下一个 SEH 记录的指针
- 0012D73C 00D90217 SE处理程序
- 0012D740 0012FFE0 指向下一个 SEH 记录的指针
- 0012D744 00D90A6F SE处理程序
- 0012D748 0012FF90
- 0012D74C 00D80000
- 0012D750 00D60000
- 0012D754 00D90038
- 0012D758 00000000
- 0012D75C 00DA717C ASCII "jdVaiACwTX8=" //硬件ID
- 0012D760 00000000
- 0012D764 00000000
- 0012D768 00000000
- 0012D76C 00000000
4.一个一个双击查看,向上拖几行如看到字符串".key"和"regfile",说明就是这里了
- 00D8DCAB B1 01 mov cl, 1
- 00D8DCAD BA 88DFD800 mov edx, 0D8DF88 ; ASCII ".key"
- 00D8DCB2 8B45 F4 mov eax, dword ptr [ebp-C]
- 00D8DCB5 E8 6AEFFFFF call 00D8CC24
- 00D8DCBA 84C0 test al, al
- 00D8DCBC 74 17 je short 00D8DCD5
- 00D8DCBE B9 98DFD800 mov ecx, 0D8DF98 ; ASCII "regfile"
- 00D8DCC3 33D2 xor edx, edx
- 00D8DCC5 8B45 F4 mov eax, dword ptr [ebp-C]
- 00D8DCC8 E8 DBF1FFFF call 00D8CEA8
- 00D8DCCD 8B45 F4 mov eax, dword ptr [ebp-C]
- 00D8DCD0 E8 BBEEFFFF call 00D8CB90
- 00D8DCD5 33C0 xor eax, eax
- 00D8DCD7 5A pop edx
- 00D8DCD8 59 pop ecx
- 00D8DCD9 59 pop ecx
- 00D8DCDA 64:8910 mov dword ptr fs:[eax], edx
- 00D8DCDD 68 F2DCD800 push 0D8DCF2
- 00D8DCE2 8B45 F4 mov eax, dword ptr [ebp-C]
- 00D8DCE5 E8 264CFFFF call 00D82910
- 00D8DCEA C3 retn
- 00D8DCEB ^ E9 F850FFFF jmp 00D82DE8
- 00D8DCF0 ^ EB F0 jmp short 00D8DCE2
- 00D8DCF2 B2 01 mov dl, 1
- 00D8DCF4 B8 24C9D800 mov eax, 0D8C924 ; ASCII 0E,"TBlockOperator"
- 00D8DCF9 E8 36ECFFFF call 00D8C934
- 00D8DCFE 8945 F8 mov dword ptr [ebp-8], eax
5.在字符串"TBlockOperator"的地址(0D8DCF4)处下断
向下拖能看到"ExitPorcess"跟"MessageBox",当然是跳过了,我的做法是凡到retn处之前,所有的跳转都让它跳。。。。。
6.F9,patch成功
试练程序下载地址:http://good.gd/3141912.htm(由于文件大于1M,所以就上传到网站了)
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|