能力值:
( LV9,RANK:3410 )
11 楼
最初由 hunter_boy 发布 用PD测的吧,但没壳为什么OD对他感冒呢???? 都是forgot惹的祸啦
这个东东用了仙剑加壳的,伪装VC++
VB的东东,forgot也“壳”不了啦
用OD载入程序,忽略所有异常选项。
下断:BP ZwQueryInformationProcess+0A
中断后返回
004E3493 FF95 B62F4000 call dword ptr ss:[ebp+402FB6]
004E3499 50 push eax
004E349A FFD6 call esi ; ntdll.ZwQueryInformationProcess
004E349C 0BC0 or eax,eax
004E349E 75 0F jnz short Study.004E34AF//改变标志位Z=0,使这里跳转
004E34A0 58 pop eax
004E34A1 0BC0 or eax,eax
004E34A3 74 0D je short Study.004E34B2
004E34A5 6A 00 push 0
004E34A7 FF95 F92E4000 call dword ptr ss:[ebp+402EF9]//OVER
004E34AD EB 03 jmp short Study.004E34B2
现在在401000段下内存访问断点,shift+f9 会中断在004E193B处
004E193B 8807 mov byte ptr ds:[edi],al
004E193D 47 inc edi
004E193E 01DB add ebx,ebx
004E1940 75 07 jnz short Study.004E1949
取消所有断点
Ctrl+B 搜索16进制值:60E9 找到的第2处就是跳OEP的地方啦
004E1A8B 60 pushad
004E1A8C E9 5711F2FF jmp Study.00402BE8//飞向光明之巅!:-)
00402BE8 68 882E4000 push Study.00402E88 //在这儿用LordPE完全DUMP这个进程
00402BED E8 EEFFFFFF call Study.00402BE0 ; jmp to offset MSVBVM60.ThunRTMain
OEP: 00002BE0 IATRVA: 00001000 IATSize: 000002C8
―――――――――――――――――――――――――――――――――
另外:程序检查主程序目录下的EXE文件,比较“霸道”,只允许有Study.exe和unins000.exe
呵呵,把004D6D14处改为JMP,程序就不多管闲事了
004D6D0B FF15 30114000 call dword ptr ds:[<&msvbvm60.__vbaVarTstEq>]
004D6D11 66:85C0 test ax,ax
004D6D14 0F85 2A010000 jnz Study.004D6E44//jmp 004D6E44 ★
004D6D1A B8 08800000 mov eax,8008
004D6D1F 8D55 DC lea edx,dword ptr ss:[ebp-24]
004D6D22 8985 70FFFFFF mov dword ptr ss:[ebp-90],eax
004D6D28 8985 60FFFFFF mov dword ptr ss:[ebp-A0],eax
004D6D2E 8D85 70FFFFFF lea eax,dword ptr ss:[ebp-90]
004D6D34 52 push edx
004D6D35 8D4D B0 lea ecx,dword ptr ss:[ebp-50]
004D6D38 50 push eax
004D6D39 51 push ecx
004D6D3A C785 78FFFFFF 84304>mov dword ptr ss:[ebp-88],Study.00413084 ; UNICODE "Study.exe"
004D6D44 C785 68FFFFFF 9C304>mov dword ptr ss:[ebp-98],Study.0041309C ; UNICODE "unins000.exe"
004D6D4E FFD6 call esi
004D6D50 50 push eax
004D6D51 8D55 DC lea edx,dword ptr ss:[ebp-24]
004D6D54 8D85 60FFFFFF lea eax,dword ptr ss:[ebp-A0]
004D6D5A 52 push edx
004D6D5B 8D4D A0 lea ecx,dword ptr ss:[ebp-60]
004D6D5E 50 push eax
004D6D5F 51 push ecx
004D6D60 FFD6 call esi
004D6D62 8D55 90 lea edx,dword ptr ss:[ebp-70]
004D6D65 50 push eax
004D6D66 52 push edx
004D6D67 FF15 3C114000 call dword ptr ds:[<&msvbvm60.__vbaVarOr>]
004D6D6D 50 push eax
004D6D6E FF15 F0104000 call dword ptr ds:[<&msvbvm60.__vbaBoolVarNull>]
004D6D74 66:85C0 test ax,ax
004D6D77 74 45 je short Study.004D6DBE
004D6D79 B8 01000000 mov eax,1
004D6D7E 66:0345 D8 add ax,word ptr ss:[ebp-28]
004D6D82 0F80 39010000 jo Study.004D6EC1
004D6D88 8945 D8 mov dword ptr ss:[ebp-28],eax
004D6D8B E9 F6FDFFFF jmp Study.004D6B86
能力值:
( LV8,RANK:130 )
22 楼
总结一下
=================================================================================================================
这是一个VB程序,有MD5,OD看了半天,头晕~~~~~~不过可以知道你写入的试炼码放在同目录的System.ini中,这倒是很仁慈哦,看来是启动读取ini
文件检测试炼码咯.
用SmartCheck 6.2来搞定~~~~~
第一次用,别见笑
=========================================================================================
参考:
Mid(VARIANT:String:"abcdefg", long:1, VARIANT:Integet:1)
解释:
从位置1得到字符串"abcdefg"第一个字符。
点击上面的 "+"号寻找 SysAllocStringByteLen
如. SysAllocStringByteLen(LPSTR:004103F0, DWORD:00000002) returns LPVOID:410434
解释:
"a"将被复制到内存00410434
它后面通常跟随 __vbaStrVarVal(VARIATN:String"a") returns DWORD:410434
Asc(String:"T") returns Integer:84
解释:
得到“T”的ASCII码十进制 84
SysFreeString(BSTR:004103F0)
解释:
释放内存位置:004103F0
这些对我们特别有用,因为当你点击它们,看右边窗口,你将看到被释放的字符串。此时正确的序列号和密码有可能在此。
__vbaVarCat(VARIANT:String:"aa", VARIANT:String:"bb") returns DWORD:63F974
解释:
连接 "bb" 和"aa"形成"aabb"
__vbaFreeVar(VARIANT:String:"abcdefg")
点击 "+"寻找SysFreeString
例. SysFreeString(BSTR:0041035C)
解释:
从内存 0041035C释放 "abcdefg"
这儿,点击这行在右边有可能发现你所要的东西。
==========================================================================================
载入后看到有12个Thread,12线程??展开Thread 0 | _Timer | _Load
OK,看看程序做了些什么...不断往下拉你会看到一串Asc-Mid,程序在载入机器码662201349941,注意了,现在慢慢往下看,你会发现一大串
Double-->Long ,哦是菜虫,不知道那是怎么回事,也许是MD5的运算哦,好的,注意结束的一个Mid,你会发现运算结果
4D0505284AC5049B4167EB7EBFE0791B,OK,将其写入System.ini,在这里展开(Show All Events),发现其实是4D050528,4AC5049B,
4167EB7E,BFE0791Bl四组数字连接而成,在Mid下面的_vbaStrVarMove 中提供了一串数字哦:7EB7EBFE,再往下看你会发现4AC5049B和7EB7EBFE的
比较,好的我们来将他们组合一下将结果写入System.ini中:Serial=4D0505287EB7EBFE4167EB7EBFE0791B 提示(已注册),好的,看看有什么内
容,~~~~提示"只有注册用户可用"...看来还有变化,SC载入,出现提示后停下来,找到最近的Mid,OK,展开发现4167EB7E和BFB53FDF的比较,呵呵
,修改先~~~~~,结果写入System.ini ,看看阅读理解的答题卡~~~提示"只有注册用户可用",呵呵已有心理准备~~,SC载入,出现提示后停下来,
找到最近的Mid,你会发现4D050528和5E9522D9的比较,最后一个_Click展开找到最近的Mid,你会发现BFE0791Bl和" "的比较,看来试炼码不够长,
加入*Cracked by Hunter_Boy*修改写入,发现是和r_Boy*进行比较,呵呵,修改先~~~~~还有两处雷同!!~~搞定
==========================================================================================
*********************************************************************************
总之先找到一连串Double-->Long,往下找到一组Mid--Len--GetPrivateProfileStringA--LSet--Mid--LSet--Left--Left ,选中最后两个Left可
以分别看到试炼码和注册码 ^_^~!
机器码662201349941
1 产生 F16F5E9522D90F5D6CA5332B4BC9FA24 , 标识5E9522D9
^^^^^^^^ ==============>|
2 产生 4D0505284AC5049B4167EB7EBFE0791B , 标识7EB7EBFE
^^^^^^^^==============>|
3 产生 3871BD64012152BFB53FDF04B401193F , 标识BFB53FDF
^^^^^^^^ ==============>|
4 产生 C81E728D9D4C2F636F067F89CC14862C , 标识36F067F8
^^^^^^^^ ==============>|
5 产生 96A3BE3CF272E017046D1B2674A52BD3 , 标识46D1B267
^^^^^^^^ ==============>|
6 产生 757B505CFD34C64C85CA5B5690EE5293 , 标识4C64C85C
^^^^^^^^ ==============>|
====>组合替换
BFB53FDF-->开启菜单功能
7EB7EBFE-->启动检测(窗口提示已注册)
5E9522D9-->启动答题卡功能检测
4C64C85C-->开启答题卡功能
36F067F8-->开启注释功能
46D1B267-->开启记录功能
结果
机器码662201349941
Serial=5E9522D97EB7EBFEBFB53FDF36F067F846D1B2674C64C85C^_^*Cracked by Hunter_Boy*
**********************************************************************************
另外有些疑问想问问大家,
1.SmartCheck 在98下用还好,产生的文件只有6MB,而我在XP下使用时要载入好久好久,它发现的ProEvent(1009900)太多了~~~~~产生了87MB之多
,不知道是为什么?
2.它的ErrorDetection中Leaks和API and OLE...的扩展项是起什么作用的,是否要勾上?
3.参考中的Mid显示出了参数:Mid(VARIANT:String:"abcdefg", long:1, VARIANT:Integet:1) ,而我在用时只显示了Mid~~~
4.Erase,LSet,Left,Right 这些是做什么用的,为什么也只是孤单的显示在那而没有参数?
5.对于VB还有什么工具可以用的上?
6.检测说这个程序中有MD5,它用来做了什么些工作??
还有一个检测壳的问题
fly大哥是如何知道这个程序是 仙剑加壳 的,是经验还是有什么特点可以用来作为识别的标记,或是其他...?
=================================================================================================================