前言
由于文件注册和INI
文件注册皆是一样的手法,所以我决定这一课我将一次讲解掉第6
课和第7
课的内容,课件将采取比较复杂的两个VB
程序做为讲解
这里我说一个VB
的技巧
VB
多数用于编写一些小软件或者找图类型的外挂
但是VB
多数采取FFFF
也就是-1
作为比较,判断是否为正式版
那么今天我们也就开始我们的摸象计划
__vbaEnd
退出
__vbaStrCmp
比较
0061F8B0 50 push eax
0061F8B1 51 push ecx
0061F8B2 FF15 68114000 call dword ptr ds:[<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp
这一堆是动态读取程序的MD5
作为效验,是否为注册,因为我们要注册这个程序
必须改动代码,一经改动,MD5
即变,所以就很难注册成功
0012F75C 0020184C UNICODE "48A525EB4AFA10EF7FF2128A8BE3D82C"
0012F760 002030E4 UNICODE "CFCD208495D565EF66E7DFF9F98764DA"
今天我们还要在说一个VB
的技巧,就是判断段内的部分死码查找
66 2D 01 00 51 6A 01 52
其实VB
最擅长也就是把-1
和0
作为比较
不像其他语言是把1
或者0
作为比较
00457A60 |. 83C4 04 add esp,0x4
00457A63 |. E8 A684FFFF call Unpacked.0044FF0E
00457A68 |. E8 83AAFCFF call Unpacked.004224F0
00457A6D |. E8 4540FEFF call Unpacked.0043BAB7
00457A72 |. E8 8D95FAFF call Unpacked.00401004
00457A77 |. E8 AF84FFFF call Unpacked.0044FF2B
00457A7C |. E8 BD95FAFF call Unpacked.0040103E
00457A81 |. E8 1440FEFF call Unpacked.0043BA9A
00457A86 |. E8 137BFFFF call Unpacked.0044F59E
00457A8B |. E8 783FFEFF call Unpacked.0043BA08
00457A90 |. E8 8C95FAFF call Unpacked.00401021
00457A95 |. E8 73AAFCFF call Unpacked.0042250D
00457A9A |. E8 C382FFFF call Unpacked.0044FD62
00457A9F |. E8 FEAAFCFF call Unpacked.004225A2
00457AA4 |. E8 423FFEFF call Unpacked.0043B9EB
00457AA9 |. E8 6976FFFF call Unpacked.0044F117
00457AAE |. 68 01000152 push 0x52010001
00457AB3 |. E8 11000000 call Unpacked.00457AC9
00457AB8 |. 83C4 04 add esp,0x4
00457ABB |. E8 03000000 call Unpacked.00457AC3
00457AC0 |. 33C0 xor eax,eax
00457AC2 \. C3 retn
ebp=0012FFF0
本地调用来自 0040146B, 00401737, 0041C57A, 0041C5A9, 0041C6F4, 0041C742, 00423831, 00423B3E, 00424021, 004263F5, 0042D0EA, 0042D24F, 0042D273, 0042D297, 0042D2BB, 0042D2DF, 0042D303, 0042D327, 0042D34B, 0042D36F, 0042D393, 0042D3B7, 0042D3DB, M)