编辑“︁
虚拟机分析
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 处理用户输入 == 我们进入<code>process_input</code>函数, 该函数仅仅对输入字符串进行了很简单的处理. <syntaxhighlight lang="c"> result = strlength((int)inputName); if ( v1 >= 7 ) // v1 = length of inputName { *(_DWORD *)&lenOfName = v1; result = strlength((int)inputKey); if ( v2 >= 7 ) // v2 = length of inputKey { i = 0; do { inputName[i] ^= i; ++i; } while ( i <= *(_DWORD *)&lenOfName ); unk_4031CE = i; dword_4031C8 = dword_4035FF; initVM(); initVM(); __debugbreak(); JUMPOUT(*(_DWORD *)&word_4012CE); } } return result;</syntaxhighlight> 首先是这个<code>strlength()</code>函数. 函数使用<code>cld; repne scasb; not ecx; dec ecx</code>来计算字符串长度并将结果保存在<code>ecx</code>里. 是汇编基础知识就不多介绍. 所以我们将该函数重命名为<code>strlength</code> <syntaxhighlight lang="asm">.text:004011C2 arg_0 = dword ptr 8 .text:004011C2 .text:004011C2 push ebp .text:004011C3 mov ebp, esp .text:004011C5 mov edi, [ebp+arg_0] .text:004011C8 sub ecx, ecx .text:004011CA sub al, al .text:004011CC not ecx .text:004011CE cld .text:004011CF repne scasb .text:004011D1 not ecx .text:004011D3 dec ecx .text:004011D4 leave .text:004011D5 retn 4 .text:004011D5 strlength endp</syntaxhighlight> 而在IDA生成的伪C代码处有<code>v1</code>和<code>v2</code>, 我对其进行了注解, 可以看汇编, 里面是使用<code>ecx</code>与<code>7</code>进行比较, 而<code>ecx</code>是字符串的长度, 于是我们可以知道, 这里对输入的要求是: ''inputName 和 inputKey 的长度均不少于 7'' 当<code>inputName</code>和<code>inputKey</code>长度均不少于7时, 那么就可以对输入进行简单的变换. 以下是一个循环 <syntaxhighlight lang="c"> i = 0; do { inputName[i] ^= i; ++i; } while ( i <= *(_DWORD *)&lenOfName );</syntaxhighlight> 对应的python代码即 <syntaxhighlight lang="python">def obfuscate(username): s = "" for i in range(len(username)): s += chr(ord(username[i]) ^ i) return s</syntaxhighlight> 函数之后对一些变量进行了赋值(这些并不重要, 就忽略不讲了.) <span id="注册seh"></span>
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息