设为首页收藏本站喵玉殿官方微博

 找回密码
 少女注册中
搜索
查看: 5266|回复: 3

[特种技术] RGE Ruby Game Engine ?

[复制链接]
发表于 2011-3-14 15:35:40 | 显示全部楼层 |阅读模式
本帖最后由 十二 于 2011-3-14 15:44 编辑

F3载入Game.exe

bp ReadFile

堆栈:

  1. 0241FB74 75FADAFD /CALL 到 ReadFile 来自 kernel32.75FADAF8
  2. 0241FB78 000000C0 |hFile = 000000C0 (window)
  3. 0241FB7C 03C0CF68 |Buffer = 03C0CF68
  4. 0241FB80 00001000 |BytesToRead = 1000 (4096.)
  5. 0241FB84 0241FBE8 |pBytesRead = 0241FBE8
  6. 0241FB88 00000000 \pOverlapped = NULL
复制代码


直接Alt+F9返回,Ctrl+A分析。

  1. 03B00595 83C4 1C ADD ESP,1C
  2. 03B00598 57 PUSH EDI
  3. 03B00599 8BCE MOV ECX,ESI
  4. 03B0059B E8 A0FBFFFF CALL RGE.03B00140    校验RGE脚本,检测RGE脚本是否有效。
  5. 03B005A0 85C0 TEST EAX,EAX
  6. 03B005A2 75 15 JNZ SHORT RGE.03B005B9
  7. 03B005A4 C745 D8 A081B60>MOV DWORD PTR SS:[EBP-28],RGE.03B681A0
  8. 03B005AB 68 08C4B403 PUSH RGE.03B4C408
  9. 03B005B0 8D4D D8 LEA ECX,DWORD PTR SS:[EBP-28]
  10. 03B005B3 51 PUSH ECX
  11. 03B005B4 E8 E9460300 CALL RGE.03B34CA2 ; JMP 到 msvcrt._CxxThrowException
  12. 03B005B9 8B96 D8000000 MOV EDX,DWORD PTR DS:[ESI+D8]
  13. 03B005BF 8B46 0C MOV EAX,DWORD PTR DS:[ESI+C]
  14. 03B005C2 03C2 ADD EAX,EDX
  15. 03B005C4 8946 14 MOV DWORD PTR DS:[ESI+14],EAX
  16. 03B005C7 8946 10 MOV DWORD PTR DS:[ESI+10],EAX
  17. 03B005CA 885E 19 MOV BYTE PTR DS:[ESI+19],BL
  18. 03B005CD 885E 18 MOV BYTE PTR DS:[ESI+18],BL
  19. 03B005D0 C745 FC FFFFFFF>MOV DWORD PTR SS:[EBP-4],-1
  20. 03B005D7 B8 01000000 MOV EAX,1
  21. 03B005DC 8B4D F0 MOV ECX,DWORD PTR SS:[EBP-10]
  22. 03B005DF 64:890D 0000000>MOV DWORD PTR FS:[0],ECX
  23. 03B005E6 5F POP EDI
  24. 03B005E7 5E POP ESI
  25. 03B005E8 5B POP EBX
  26. 03B005E9 8BE5 MOV ESP,EBP
  27. 03B005EB 5D POP EBP
  28. 03B005EC C2 0800 RETN 8
复制代码


直接Ctrl+F9执行到RETN 8然后F8单步,两次Ctrl+F搜索CALL RGE.rb_str_new2指令,在它上一句PUSH ESI下断F9执行跟踪ESI的地址得到解密脚本。

F7步入CALL RGE.rb_str_new2指令。

  1. 03AF1770 >/$ 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+4]
  2. 03AF1774 |. 85D2 TEST EDX,EDX
  3. 03AF1776 |. 75 10 JNZ SHORT RGE.03AF1788
  4. 03AF1778 |. A1 A0F3BB03 MOV EAX,DWORD PTR DS:[rb_eArgError]
  5. 03AF177D |. 68 B837B603 PUSH RGE.03B637B8 ; ASCII "NULL pointer given"
  6. 03AF1782 |. 50 PUSH EAX
  7. 03AF1783 |. E8 A8B1FAFF CALL RGE.rb_raise
  8. 03AF1788 |> 57 PUSH EDI
  9. 03AF1789 |. 8BFA MOV EDI,EDX
  10. 03AF178B |. 83C9 FF OR ECX,FFFFFFFF
  11. 03AF178E |. 33C0 XOR EAX,EAX
  12. 03AF1790 |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]
  13. 03AF1792 |. F7D1 NOT ECX
  14. 03AF1794 |. 49 DEC ECX
  15. 03AF1795 |. 51 PUSH ECX
  16. 03AF1796 |. 52 PUSH EDX
  17. 03AF1797 |. E8 04FFFFFF CALL RGE.rb_str_new
  18. 03AF179C |. 83C4 08 ADD ESP,8
  19. 03AF179F |. 5F POP EDI
  20. 03AF17A0 \. C3 RETN

复制代码
03AF1790 |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]
03AF1792 |. F7D1 NOT ECX
03AF1794 |. 49 DEC ECX
得到脚本的大小,Ctrl+F9结束此子程。停到03A6F29A |. 8945 D4 |MOV [LOCAL.11],EAX
  1. 03A6F29A |. 8945 D4 |MOV [LOCAL.11],EAX
  2. 03A6F29D |. 6A 03 |PUSH 3
  3. 03A6F29F |. 53 |PUSH EBX
  4. 03A6F2A0 |. 8B55 DC |MOV EDX,[LOCAL.9]
  5. 03A6F2A3 |. 52 |PUSH EDX
  6. 03A6F2A4 |. 50 |PUSH EAX
  7. 03A6F2A5 |. 6A 04 |PUSH 4
  8. 03A6F2A7 |. A1 D081B603 |MOV EAX,DWORD PTR DS:[3B681D0]
  9. 03A6F2AC |. 50 |PUSH EAX
  10. 03A6F2AD |. 8B0D 90F2BB03 |MOV ECX,DWORD PTR DS:[rb_mKernel]
  11. 03A6F2B3 |. 51 |PUSH ECX
  12. 03A6F2B4 |. E8 27790300 |CALL RGE.rb_funcall
  13. 03A6F2B9 |. 83C4 24 |ADD ESP,24
  14. 03A6F2BC |. 8B75 08 |MOV ESI,[ARG.1]
  15. 03A6F2BF |. 8B7D E4 |MOV EDI,[LOCAL.7]
  16. 03A6F2C2 |. 8B5D E0 |MOV EBX,[LOCAL.8]
  17. 03A6F2C5 |.^ E9 B3FEFFFF \JMP RGE.03A6F17D
复制代码


03A6F2B4  |.  E8 27790300   |CALL RGE.rb_funcall 初步猜测是实例化脚本的过程因为我步过的时候程序就跑起来了(汗- =)

但是它上面的几个PUSH参数我无解。

评分

参与人数 1积分 +8 收起 理由
真PKS同志 + 8 12神触辛苦了

查看全部评分

发表于 2011-3-14 16:04:52 | 显示全部楼层
根据Ruby的特性,RGE中的Ruby库应该是作者自己写的……
所以不会一点密不加吧……
回复

使用道具 举报

 楼主| 发表于 2011-3-14 16:16:32 | 显示全部楼层
很多地方都无解的 rb_str_new2处理脚本的具体流程

rb_funcall 函数的参数我也不知道都是神马意思,真要想知道RGE的具体实现方式还是很困难
回复

使用道具 举报

发表于 2012-6-12 13:01:37 | 显示全部楼层
十二 发表于 2011-3-14 16:16
很多地方都无解的 rb_str_new2处理脚本的具体流程

rb_funcall 函数的参数我也不知道都是神马意思,真要 ...

rb_funcall( (VALUE)object, (ID)rb_intern("method_name"), (int)nargs, (VALUE...)args)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 少女注册中

本版积分规则

合作与事务联系|无图版|手机版|小黑屋|喵玉殿

GMT+8, 2025-10-31 15:31

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表