欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

有声有色3.16破解---SMC技术应用一则 (3千字)

有声有色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: 即西方神话中墨丘利(赫耳墨斯)神, 众神的信使. 在炼金术中指水
        银,依靠它能最终获得炼金术最高的成就,得到点金石,青春泉!

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功