求助汇编代码的含义
本帖最后由 darksied 于 2022-6-28 20:05 编辑第15届全国大学生信息安全创新实践赛西南赛区逆向题目 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
下载了里面的hhhh.exe,找到了判断位置,
对输入的key和message做检测,其中对key的是
007B2245|.6A 10 push 0x10
007B2247|.E8 42360000 call hhhh.007B588E
007B224C|.83C4 04 add esp,0x4
007B224F|.B9 C0AA7D00 mov ecx,hhhh.007DAAC0
007B2254|.833D D4AA7D00>cmp dword ptr ds:,0x10
007B225B|.8BF8 mov edi,eax
007B225D|.0F430D C0AA7D>cmovnb ecx,dword ptr ds:
007B2264|.0F1001 movups xmm0,dqword ptr ds:
007B2267|.0F1107 movups dqword ptr ds:,xmm0
007B226A|.0F31 rdtsc
007B226C|.A3 C0C57D00 mov dword ptr ds:,eax
007B2271|.8BCF mov ecx,edi
007B2273|.E8 78FEFFFF call hhhh.007B20F0
007B2278|.8D4F 08 lea ecx,dword ptr ds:
007B227B|.E8 70FEFFFF call hhhh.007B20F0
007B2280|.0F31 rdtsc
007B2282|.A3 BCBD7D00 mov dword ptr ds:,eax
007B2287|.8BCF mov ecx,edi
007B2289|.BA 60AA7D00 mov edx,hhhh.007DAA60
007B228E|.BE 0C000000 mov esi,0xC
007B2293|>8B01 /mov eax,dword ptr ds:
007B2295|.3B02 |cmp eax,dword ptr ds:
007B2297|.0F85 3A010000 |jnz hhhh.007B23D7
007B229D|.83C1 04 |add ecx,0x4
007B22A0|.83C2 04 |add edx,0x4
007B22A3|.83EE 04 |sub esi,0x4
007B22A6|.^ 73 EB \jnb short hhhh.007B2293
完全看不懂在干啥。请问哪里有相关资料?
在IDA里转成伪代码是
void __thiscall sub_401B70(_DWORD *this)
{
int v1; // ecx
void (__thiscall ***v2)(_DWORD, signed int); // eax
v1 = this;
if ( v1 )
{
v2 = (void (__thiscall ***)(_DWORD, signed int))(*(int (**)(void))(*(_DWORD *)v1 + 8))();
if ( v2 )
(**v2)(v2, 1);
}
} thiscall 是 C++ 类里方法调用的实现
会把 this指针 放进 ecx
至于你问代码是做什么的,不知道……
但这边rdtsc寄存器值得注意,计算了程序执行时间,用了调试器影响了时间会影响结果
页:
[1]