有声有色3.16破解---SMC技术应用一则 (3千字)
有声有色3.16破解---SMC技术应用一则对于这个程序作者用UPX0.72进行了压缩,相应版本的UPX解压出错,procdump解可以,但反汇编仍有问题,除非在procdump中选择rebuild new inport table才勉强可以,估计作者用了UPX的多重压缩技术。为此正好拿它训练一下SMC技术。
1 过期破解:
过期后用BPX MESSAGEBOXEXA断点,加上残缺的dump.exe,及不断的尝试,我们知道在
:004E0BC1 83FA1E cmp edx, 0000001E
:004E0BC4 7D48 jge 004E0C0E <-- ×××××
:004E0BC6 833D6CBC4E001E cmp dword ptr [004EBC6C], 0000001E
:004E0BCD 7D3F jge 004E0C0E
:004E0BCF 833D6CBC4E001E cmp dword ptr [004EBC6C], 0000001E
:004E0BD6 7D36 jge 004E0C0E
:004E0BD8 803DB0BC4E0001 cmp byte ptr [004EBCB0], 01
:004E0BDF 742D je 004E0C0E
:004E0BE1 803DB1BC4E0001 cmp byte ptr [004EBCB1], 01
:004E0BE8 7424 je 004E0C0E
:004E0BEA 803DB2BC4E0001 cmp byte ptr [004EBCB2], 01
:004E0BF1 741B je 004E0C0E
:004E0BF3 803DB3BC4E0001 cmp byte ptr [004EBCB3], 01
:004E0BFA 7412 je 004E0C0E
:004E0BFC 803DB4BC4E0001 cmp byte ptr [004EBCB4], 01
:004E0C03 7409 je 004E0C0E
:004E0C05 803DB5BC4E0001 cmp byte ptr [004EBCB5], 01
:004E0C0C 7513 jne 004E0C21 <-- ×××××
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004E0BC4(C), :004E0BCD(C), :004E0BD6(C), :004E0BDF(C), :004E0BE8(C)
|:004E0BF1(C), :004E0BFA(C), :004E0C03(C)
|
:004E0C0E 8BC3 mov eax, ebx
:004E0C10 E8278BFFFF call 004D973C
:004E0C15 A1B8BC4E00 mov eax, dword ptr [004EBCB8]
:004E0C1A E8C9EEF8FF call 0046FAE8 <--die!!!
最终知道使:004E0BC4 jge 004E0C0E改为直接跳到cs:004E0C21就没有过期问题了。
即在cs:004E0BC4处改7D 48 为EB 5B。
2 SMC的解决
思路:当程序在内存中解压完毕,跳到真正入口点前让其先跳到补丁代码处执行补丁,再回到原入口继续正常工作。
步骤:
(1〕下bpmb 004E0BC4,用TRW2000载入主程序,被拦截后用F6在代码中往下看,发现程序真正入口点
:0053F198 E9677DFAFF jmp 004E6F04
而在此上下没有地方给我PATCH,所以用TOPO为它加了50个bytes,以供我利用。这样重新用TRW载入后,看到程序先从我加入CODE处开始,运行我这50个WORD(90,90...〕,再开始原本的UPX解压。即:
:0053E281 90 NOP
: 0053E282 90 NOP
......
: 0053E290 90 NOP
......
: 0053E2AE JMP 0053F000 此处UPX开始解压。所以从: 0053E286 90 NOP就可以利用,使得直接跳到cs:0053F000,这样多了一段空白代码供我写PATCH CODE。
(2) 在真正入口点跳转处 :0053F198 E9677DFAFF jmp 004E6F04,让代码转到空白处cs:0053E290
(3)cs:0053E290处写好patch code, mov [004E0BC4], EB5B833D
再跳回入口,jmp 004E6F04
(4)整个过程如下:
(A)用TOPO在主程序MusRea.exe中加入50个bytes。
(B)trw载入后,f10走几步,在cs:0053E286处下汇编指令A,回车后输入jmp 0053F000,两次回车后d eip,记下代码E9 75 0D。
(C)G 0053f198,
a,输入jmp 0053E290,
d eip,记下 E9 F3 F0 FF FF
(D)F10一步,跳到cs:0053E290处
a,输入 mov [004E0BC4], EB5B833D
d eip,记下 C7 05 C4 0B 4E 00 EB 5B 83 3D
(E)F10走一步,cs:0053E29A处
a,输入 jmp 004E6F04
d eip,记下 E9 65 8C FA FF
(F)打开HIEW,在上述4个地方修改后保存。
job done!
thank you for reading my tutorial.
from china crack group
mercury: 即西方神话中墨丘利(赫耳墨斯)神, 众神的信使. 在炼金术中指水
银,依靠它能最终获得炼金术最高的成就,得到点金石,青春泉!
