首页
社区
课程
招聘
[旧帖] [求助]逆向计算。是高手的来 0.00雪花
发表于: 2009-4-1 15:50 5044

[旧帖] [求助]逆向计算。是高手的来 0.00雪花

2009-4-1 15:50
5044
(7EFEFEFF+X)XOR(X XOR FFFFFFFF)=81010100

能否帮忙给个计算X的程式。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
......
2009-4-1 16:06
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
只知道这些数据应该无法求出解(在X <> 0的情况下)。除非可以取得((X xor FFFFFFFF) = X1)X1这个值的话就可以逆出X的值。
2009-4-1 16:36
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这句话是为了凑够六个字
2009-4-1 16:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
00418690  |>  8B01          /mov eax,dword ptr ds:[ecx]
00418692  |. |BA FFFEFE7E   |mov edx,7EFEFEFF
00418697  |. |03D0          |add edx,eax                         ;  edx=7EFF5C5A
00418699  |. |83F0 FF       |xor eax,FFFFFFFF                    ;  eax=FFFFA2A4
0041869C  |. |33C2          |xor eax,edx                         ;  eax=8100FEFE
0041869E  |. |83C1 04       |add ecx,4
004186A1  |. |A9 00010181   |test eax,81010100
004186A6  |.^ 74 E8         |je short 脱壳.00418690
2009-4-1 17:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看看这些信息可否有帮助。
2009-4-1 17:42
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
你这个例子较特别, 若不考虑加法进位的问题... "+" 等同 "or"

    (7EFEFEFF+X) ^ (X XOR FFFFFFFF) = 81010100
=>  (7EFEFEFF+X) ^ X' = 81010100

二边各xor X'
=>  7EFEFEFF+X = 81010100 ^ X'

设 7EFEFEFF 为 A , 则 81010100 = A'
=> A+X = A' ^ X' , 根据 http://bbs.pediy.com/showthread.php?t=83490 倒数第2张图(XOR用NOR取代)
       = ((A'+X')' + (A+X)')'
=> (A+X)' =  (A'+X')' + (A+X)'
=> (A'+X')' = 0
=> A'+X' = FFFFFFFF
因为 A' = 81010100
所以 X' = FFFFFFFF-81010100=7EFEFEFF
     X = 81010100
验证 :
  (7EFEFEFF+81010100) ^ (81010100^FFFFFFFF) = 81010100
  FFFFFFFF ^ 7EFEFEFF = 81010100
  81010100 = 81010100

结论
  (7EFEFEFF+X) ^ (X XOR FFFFFFFF) = 81010100
  X = Result = 81010100
2009-4-1 17:43
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
8
你早点将5楼代码发出来我就不用浪费时间了.
那个是计算字符串长度的

你给人家追进去了
2009-4-1 17:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
首先感谢楼上的高手指点。
按照这样的结论算,我都白计算了。
2009-4-1 18:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
00418670  /$  8B4C24 04     mov ecx,dword ptr ss:[esp+4]
00418674  |.  F7C1 03000000 test ecx,3
0041867A  |.  74 14         je short 脱壳.00418690
0041867C  |>  8A01          /mov al,byte ptr ds:[ecx]
0041867E  |.  41            |inc ecx
0041867F  |.  84C0          |test al,al
00418681  |.  74 40         |je short 脱壳.004186C3
00418683  |.  F7C1 03000000 |test ecx,3
00418689  |.^ 75 F1         \jnz short 脱壳.0041867C
0041868B  |.  05 00000000   add eax,0
00418690  |>  8B01          /mov eax,dword ptr ds:[ecx]
00418692  |.  BA FFFEFE7E   |mov edx,7EFEFEFF
00418697  |.  03D0          |add edx,eax
00418699  |.  83F0 FF       |xor eax,FFFFFFFF
0041869C  |.  33C2          |xor eax,edx
0041869E  |.  83C1 04       |add ecx,4
004186A1  |.  A9 00010181   |test eax,81010100
004186A6  |.^ 74 E8         |je short 脱壳.00418690
004186A8  |.  8B41 FC       |mov eax,dword ptr ds:[ecx-4]
004186AB  |.  84C0          |test al,al
004186AD  |.  74 32         |je short 脱壳.004186E1
004186AF  |.  84E4          |test ah,ah
004186B1  |.  74 24         |je short 脱壳.004186D7
004186B3  |.  A9 0000FF00   |test eax,0FF0000
004186B8  |.  74 13         |je short 脱壳.004186CD
004186BA  |.  A9 000000FF   |test eax,FF000000
004186BF  |.  74 02         |je short 脱壳.004186C3
004186C1  |.^ EB CD         \jmp short 脱壳.00418690
004186C3  |>  8D41 FF       lea eax,dword ptr ds:[ecx-1]
004186C6  |.  8B4C24 04     mov ecx,dword ptr ss:[esp+4]
004186CA  |.  2BC1          sub eax,ecx
004186CC  |.  C3            retn
004186CD  |>  8D41 FE       lea eax,dword ptr ds:[ecx-2]
004186D0  |.  8B4C24 04     mov ecx,dword ptr ss:[esp+4]
004186D4  |.  2BC1          sub eax,ecx
004186D6  |.  C3            retn
004186D7  |>  8D41 FD       lea eax,dword ptr ds:[ecx-3]
004186DA  |.  8B4C24 04     mov ecx,dword ptr ss:[esp+4]
004186DE  |.  2BC1          sub eax,ecx
004186E0  |.  C3            retn
004186E1  |>  8D41 FC       lea eax,dword ptr ds:[ecx-4]
004186E4  |.  8B4C24 04     mov ecx,dword ptr ss:[esp+4]
004186E8  |.  2BC1          sub eax,ecx
004186EA  \.  C3            retn

我是追注册码追到这个CALL里来了。感觉注册码是在这里计算的。但是追了几天都没追出它的重点所在。
2009-4-1 18:12
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
11
所以你在 strlen 追了好几天
2009-4-1 18:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
sessiondiy大侠,能否帮我看下10楼的那段CALL代码,看看里面哪段是查找注册码的。。
2009-4-1 19:01
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
13
你10楼的代码是strlen函数,只是一段求字串的长度用的函数。
2009-4-1 19:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
00401EEF  /.  55            push ebp
00401EF0  |.  8BEC          mov ebp,esp
00401EF2  |.  83EC 24       sub esp,24
00401EF5  |.  57            push edi
00401EF6  |.  A1 34D34400   mov eax,dword ptr ds:[44D334]
00401EFB  |.  8945 E0       mov [local.8],eax
00401EFE  |.  B9 07000000   mov ecx,7
00401F03  |.  33C0          xor eax,eax
00401F05  |.  8D7D E4       lea edi,[local.7]
00401F08  |.  F3:AB         rep stos dword ptr es:[edi]
00401F0A  |.  8B4D 0C       mov ecx,[arg.2]
00401F0D  |.  894D DC       mov [local.9],ecx
00401F10  |.  837D DC 00    cmp [local.9],0
00401F14  |.  0F84 F6000000 je 外挂.00402010
00401F1A  |.  837D DC 01    cmp [local.9],1
00401F1E  |.  74 05         je short 外挂.00401F25
00401F20  |.  E9 57010000   jmp 外挂.0040207C
00401F25  |>  6A 01         push 1                                   ; /NewValue = 1
00401F27  |.  68 BC2E4500   push 外挂.00452EBC                   ; |pTarget = 外挂.00452EBC
00401F2C  |.  FF15 24F34300 call dword ptr ds:[<&kernel32.Interlocke>; \InterlockedExchange
00401F32  |.  8B15 542C4500 mov edx,dword ptr ds:[452C54]
00401F38  |.  81C2 000B0000 add edx,0B00
00401F3E  |.  52            push edx
00401F3F  |.  68 38D34400   push 外挂.0044D338                   ;  激活成功,感谢支持
00401F44  |.  8D45 E0       lea eax,[local.8]
00401F47  |.  50            push eax
00401F48  |.  E8 9E670100   call 外挂.004186EB
00401F4D  |.  83C4 0C       add esp,0C
00401F50  |.  8D4D E0       lea ecx,[local.8]
00401F53  |.  51            push ecx
00401F54  |.  E8 17670100   call 外挂.00418670
00401F59  |.  83C4 04       add esp,4
00401F5C  |.  83F8 08       cmp eax,8
00401F5F  |.  76 46         jbe short 外挂.00401FA7
00401F61  |.  8D55 E0       lea edx,[local.8]
00401F64  |.  52            push edx
00401F65  |.  E8 06670100   call 外挂.00418670
00401F6A  |.  83C4 04       add esp,4
00401F6D  |.  C64405 DB 2A  mov byte ptr ss:[ebp+eax-25],2A
00401F72  |.  8D45 E0       lea eax,[local.8]
00401F75  |.  50            push eax
00401F76  |.  E8 F5660100   call 外挂.00418670
00401F7B  |.  83C4 04       add esp,4
00401F7E  |.  C64405 DA 2A  mov byte ptr ss:[ebp+eax-26],2A
00401F83  |.  8D4D E0       lea ecx,[local.8]
00401F86  |.  51            push ecx
00401F87  |.  E8 E4660100   call 外挂.00418670
00401F8C  |.  83C4 04       add esp,4
00401F8F  |.  C64405 D9 2A  mov byte ptr ss:[ebp+eax-27],2A
00401F94  |.  8D55 E0       lea edx,[local.8]
00401F97  |.  52            push edx
00401F98  |.  E8 D3660100   call 外挂.00418670
00401F9D  |.  83C4 04       add esp,4
00401FA0  |.  C64405 D8 2A  mov byte ptr ss:[ebp+eax-28],2A
00401FA5  |.  EB 22         jmp short 外挂.00401FC9
00401FA7  |>  8D45 E0       lea eax,[local.8]
00401FAA  |.  50            push eax
00401FAB  |.  E8 C0660100   call 外挂.00418670
00401FB0  |.  83C4 04       add esp,4
00401FB3  |.  C64405 DE 2A  mov byte ptr ss:[ebp+eax-22],2A
00401FB8  |.  8D4D E0       lea ecx,[local.8]
00401FBB  |.  51            push ecx
00401FBC  |.  E8 AF660100   call 外挂.00418670
00401FC1  |.  83C4 04       add esp,4
00401FC4  |.  C64405 DD 2A  mov byte ptr ss:[ebp+eax-23],2A
00401FC9  |>  8D55 E0       lea edx,[local.8]
00401FCC  |.  52            push edx
00401FCD  |.  8B0D C02E4500 mov ecx,dword ptr ds:[452EC0]
00401FD3  |.  81C1 1C090000 add ecx,91C
00401FD9  |.  E8 2FEC0200   call 外挂.00430C0D
00401FDE  |.  6A 00         push 0
00401FE0  |.  8B0D C02E4500 mov ecx,dword ptr ds:[452EC0]
00401FE6  |.  81C1 1C090000 add ecx,91C
00401FEC  |.  E8 88ED0200   call 外挂.00430D79
00401FF1  |.  837D 10 00    cmp [arg.3],0
00401FF5  |.  74 14         je short 外挂.0040200B
00401FF7  |.  6A 00         push 0
00401FF9  |.  68 40D34400   push 外挂.0044D340
00401FFE  |.  68 54D34400   push 外挂.0044D354
00402003  |.  8B4D 08       mov ecx,[arg.1]
00402006  |.  E8 EA090300   call 外挂.004329F5
0040200B  |>  E9 9C000000   jmp 外挂.004020AC
00402010  |>  6A 01         push 1                                   ; /NewValue = 1
00402012  |.  68 BC2E4500   push 外挂.00452EBC                   ; |pTarget = 外挂.00452EBC
00402017  |.  FF15 24F34300 call dword ptr ds:[<&kernel32.Interlocke>; \InterlockedExchange
0040201D  |.  6A 00         push 0
0040201F  |.  6A 00         push 0
00402021  |.  68 00000010   push 10000000
00402026  |.  8B0D C02E4500 mov ecx,dword ptr ds:[452EC0]
0040202C  |.  81C1 1C090000 add ecx,91C
00402032  |.  E8 74EB0200   call 外挂.00430BAB
00402037  |.  6A 00         push 0
00402039  |.  8B0D C02E4500 mov ecx,dword ptr ds:[452EC0]
0040203F  |.  81C1 F40C0000 add ecx,0CF4
00402045  |.  E8 2FED0200   call 外挂.00430D79
0040204A  |.  68 78D34400   push 外挂.0044D378
0040204F  |.  8B0D C02E4500 mov ecx,dword ptr ds:[452EC0]
00402055  |.  81C1 F40C0000 add ecx,0CF4
0040205B  |.  E8 ADEB0200   call 外挂.00430C0D
00402060  |.  837D 10 00    cmp [arg.3],0
00402064  |.  74 14         je short 外挂.0040207A
00402066  |.  6A 00         push 0
00402068  |.  68 88D34400   push 外挂.0044D388                   ;  激活成功
0040206D  |.  68 9CD34400   push 外挂.0044D39C
00402072  |.  8B4D 08       mov ecx,[arg.1]
00402075  |.  E8 7B090300   call 外挂.004329F5
0040207A  |>  EB 30         jmp short 外挂.004020AC
0040207C  |>  837D 10 00    cmp [arg.3],0
00402080  |.  74 16         je short 外挂.00402098
00402082  |.  6A 00         push 0
00402084  |.  68 C0D34400   push 外挂.0044D3C0
00402089  |.  68 D4D34400   push 外挂.0044D3D4
0040208E  |.  8B4D 08       mov ecx,[arg.1]
00402091  |.  E8 5F090300   call 外挂.004329F5
00402096  |.  EB 14         jmp short 外挂.004020AC
00402098  |>  6A 00         push 0
0040209A  |.  68 ECD34400   push 外挂.0044D3EC                   ;  未激活
0040209F  |.  68 00D44400   push 外挂.0044D400                   ;  未激活可免费使用部分功能
004020A4  |.  8B4D 08       mov ecx,[arg.1]
004020A7  |.  E8 49090300   call 外挂.004329F5
004020AC  |>  5F            pop edi
004020AD  |.  8BE5          mov esp,ebp
004020AF  |.  5D            pop ebp
004020B0  \.  C3            retn
2009-4-1 21:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
上面这段是验证程序有没有验证的地方。
如果call 外挂.00418670是求长度的一个函数,那么就不知道哪段才是生成或者比较真正注册码的地方了。。

sessiondiy大侠和小虾大侠,帮忙再给些提示。
我都找了一个多星期了,头都大了,还是没什么头绪。
2009-4-1 21:49
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
16
还是太深
2009-4-1 22:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
什么太深?
00402060  |.  837D 10 00    cmp [arg.3],0
00402064  |.  74 14         je short 外挂.0040207A
这段程序判断注册码是否成功,只是判断[arg.3]这个局部变量是否为0。
2009-4-2 06:39
0
雪    币: 200
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
确实是个StrLen,我也追进去了  

4位一次

10037A80
mov eax,dword ptr [ecx]                -7342664E  "NfBs"        -51465378 "xSFQ"        -79E7FB00
mov edx,7EFEFEFF
add edx,eax                        -edx F241654D                -edx D0455277                -edx F8E6F9FF
xor eax,FFFFFFFF                -eax 8CBD99B1                -eax AEB9AC87                -eax 861804FF
xor eax,edx                        -eax 7EFCFCFC                -eax 7EFCFEF0                -eax 7EFEFD00
add ecx,4                        -下4位
test eax,81010100                -
je 10037A80

mov eax, dword ptr [ecx-4]        -取回最后一次循环的 79E7FB00
test al,al
je 10037AD1                        -等于0转移,跳走

10037AD1
lea eax,dword ptr[ecx-4]        -取地址至寄存器                -eax 0012D8B8
sub eax,ecx                        -密文长度                -eax 00000058
retn
2010-3-26 16:26
0
游客
登录 | 注册 方可回帖
返回
//