南邮ctf平台 逆向 WxyVM2

版权声明:本文为博主原创,未经博主允许不得转载。 https://blog.csdn.net/one_of_a_kind/article/details/83687970

直接 IDA F5出源代码, 非常好懂,就是做比较

for ( i = 0; i <= 24; ++i ) {
    if ( *(&byte_694100 + i) != dword_694060[i] )
      v1 = 0;
}

但是这段代码之前有几万条指令,其中有很多混淆的指令,只有对 byte_694100 ~ byte_694124 的修改才是有用的。
我们要做的就是要对 dword_694060[i] 进行逆运算。
我用了 python 和 notepad++ 的替换功能,将 byte_694100 ^= 0x5Eu;化简成了 00^5Eu,方便 c 处理,用 list 存储;将 dword_694060[i] 的数拷贝出来,转换成十进制数,用 sl 存储;
我使用了 c 来做,因为 python 的整数类型应该是没有溢出的,我怕可能进行运算时会出错,而用 c 比较贴近源程序,其实用什么好像都是可以的。。。因为 byte 是八位,所以我用了 uint8_t 来存储 byte。
而且 list 需要用 python 反转一下顺序,因为我们要逆运算,而 + - 与 ^ 不适用于交换律的。

#include<iostream>
#include<math.h>
#include <algorithm>
#include<string>
using namespace std;

int main() {
	uint8_t  sl[] = { -64,-123,-7,108,-30,20,-69,-28,13,89,28,35,-120,110,-101,-54,-70,92,55,-1,72,-40,31,-85,-91 };
	string list[2415] = { "09+7","11+69","00^5Eu","02^Bu","02+10","0B^6Bu","06+76","0C+121","11^Fu","0D+75","12^Bu","00^7Eu","14-105","17+26","08+26","09+96","0D^52u","12+116","02+27","15-8","14+72","01+89","12-26","10-110","0C+81","02^3u","03^55u","0B^4Fu","0B^2Bu","00^35u","13-56","01-49","05^2Fu","0A-102","0A-43","06-121","10^62u","0E-87","07^48u","13^1Au","0A+47","04-118","14+82","09-46","03^6Bu","0B-59","04^28u","0B+71","0A+100","12^29u","10^10u","0D^44u","0C^22u","03^4Fu","10^50u","15-8","14-16","02-112","09^5Bu","0C+96","05-117","07-66","09-21","0E-33","0A+69","07+108","0C^10u","15+104","0A+36","10^23u","01+63","0B^62u","11+2","0B+77","12^3Du","18-47","02-75","08+71","12-94","03^41u","04^17u","16^5Au","10+31","05+24","08-116","02-101","0B-109","01-19","13-118","0A-28","0F^5Fu","10-54","17^2Cu","0C+127","03-47","13-51","09^35u","09-41","0D+18","08+42","08+127","07^5Bu","0A-26","18+62","06^55u","16^4u","04^3Cu","06-33","0E^2Du","02^61u","0F-95","07-55","14+27","02^4Fu","11-98","09-24","03-4","06^49u","14+74","06^37u","14-117","01-66","02-51","00+64","10^18u","15-8","0D^51u","03+50","18-38","16-80","0C-104","15^37u","04+56","00+28","04+95","06+38","01-59","16-88","03+127","06^42u","05-88","0F+21","00^6Au","11+48","16+125","06^3u","06+31","11^36u","00+39","00-6","05-39","00-16","00^48u","0F-65","0F-39","15-88","00-60","03^2u","15-96","13-8","04+100","0D-56","17^5Cu","12-19","06^21u","06+35","11-121","0D-26","14-108","01+83","06+76","08^29u","03^57u","01+80","0A-53","0F^42u","07+22","0D-100","09-70","05+21","10-10","03-89","0C^34u","00^21u","0E^54u","06^32u","12+70","03+53","08+95","09-82","10-10","09+100","18-113","0E-119","02^80u","0F+20","09+28","11+36","09-67","0D+9","0A-32","01+53","09^4u","15-109","15^24u","0D+68","10-59","12+28","02^47u","07+24","10^68u","06^67u","10+12","0D-75","0E^3Au","18-89","09+114","0D^74u","09^4Cu","11-70","15^27u","0F-109","10-42","0A-33","10-5","03-23","02^2Eu","0F^42u","12-88","01+29","16-93","16^28u","17+12","01+122","04^Au","06+84","11+14","01+22","18-114","11+14","11-102","0D-22","0C-17","04^7Bu","05-91","16^Du","0A-87","0E^5Au","0D^33u","0C^Eu","13-96","12^77u","11-50","0B-32","11+5","06-109","10^73u","03^44u","12-45","0A^26u","02-93","06-121","08+88","0A+51","17^Au","00+-128","12-117","01-19","0F+90","18^6u","12^53u","0E-61","03-69","00^59u","06-44","0A-20","0D^77u","09+43","15+20","15^80u","17^2Bu","16+76","04-111","15-120","13-60","0E^65u","00-21","16+73","03+89","15^55u","07^5Bu","0C-87","0A^6Cu","05+86","05^34u","0F+103","0A^4Cu","05^57u","14^5Bu","17+37","16^31u","01+22","03+84","14^58u","15+126","0B-69","05^7Bu","06^20u","02+82","09^6Bu","06-46","00-48","07-28","07+58","06+62","06-80","00+93","06^70u","11+109","13-85","0D+118","14+1","15+86","06^36u","08+77","0D^80u","00+46","10^47u","13+34","0F-53","16+92","08+51","0F+104","0D^57u","14+66","09^1Du","01^41u","13+105","09^66u","00+15","17+30","00^6Fu","01-69","07-104","08+103","0E+93","16^29u","15-115","16+108","00^3Cu","0F-18","13-116","09+126","00+113","01+107","0D^64u","15+16","0B-83","17^24u","02^47u","07^64u","18+39","01+53","06^38u","0F^58u","0C-108","15+85","0D^Bu","11+13","13+95","0F+98","0D^68u","03^2Cu","13^18u","05+15","0D+68","13^60u","0D^66u","01-11","11+105","00+94","10^59u","01^6Bu","0D^67u","04-74","00+4","06+74","07-57","01-106","04-11","12+92","0C-111","18+102","04^Au","14-110","03-20","12-124","17-72","12^12u","0E^32u","00-3","03+39","17^8u","04-7","09-62","17^43u","13^67u","0A+103","12^Eu","18-41","01-112","01-75","0D-4","14-37","01^Du","0C-86","04+42","17^74u","15^65u","18+2","03+27","18+84","0C+79","05+98","06+1","0B^1u","08-121","02-70","08^20u","04^22u","18^44u","12-122","14^38u","18+113","00+111","0D^58u","14+33","03+43","16+2","17^4Cu","16+56","14+12","09^5Du","0D^57u","00+111","06+114","0F+48","17+50","00^5Du","15-13","02+75","0A+73","07^77u","10-17","0E^5Au","0E^1Fu","07-25","11+35","12^75u","10-71","09+76","16+56","0A^41u","12+53","03+88","01-60","04+125","00-119","03^66u","10-28","01+62","02+60","15^40u","17+66","08+15","16+14","06+45","05^Du","0D-70","04^57u","02+10","0D+8","01-78","0F^12u","05-20","16^15u","01^6Au","14^75u","16+84","02+92","0F-98","17+48","0C-93","04-102","15-79","0F^4Du","11^45u","15-53","0F+-128","00^57u","17+51","04+59","10+104","0E-112","0F^3Eu","0E+116","18-80","15^42u","00-117","0D-36","14-124","0A+21","05-16","0D-31","0B+15","10+118","01+97","0E+42","0F-90","09^23u","14-73","0C+8","15^2Fu","0F-124","11+126","11^8u","01-63","14-54","09+1","02+11","10+110","0C^1u","09^53u","03+97","0E+76","04^6Au","06^61u","09^34u","02^Cu","0B-121","0B-112","18-101","0A+104","14^Cu","09^6Eu","02^64u","16^Cu","05-75","14-88","11^16u","04-72","0A+112","07^50u","0E+31","15-10","17+64","08+114","16^5Fu","0C+44","03-37","0F^6Au","0E+49","06^7Au","0E-43","08-33","06^13u","11+4","03-100","10-101","05-12","15+52","09+67","12^35u","17+102","12^3Cu","0C+121","01^68u","0D^59u","0E^3Cu","0D^32u","11^71u","0F^63u","08-10","17-10","0E^4Du","11-5","13+112","0F+125","06^7u","02-87","09-86","0C^62u","09-93","18^43u","00+107","14^5Fu","05+40","00+67","0F+49","0C+97","07-25","03+107","14+35","03-41","11-39","04-65","11^5u","01^1Bu","0C-110","16-127","0E^4u","18^4Fu","17-21","03+105","0C^39u","03+15","0A-115","07+87","0F^37u","0B-56","03-64","10-43","11-106","02^10u","10^65u","17^6Eu","06-89","16-33","16-113","0F-28","12^48u","15-31","15+107","08^13u","10^74u","13-4","03^Eu","00+67","10^55u","08^40u","0A^4Au","10^16u","09+31","0B^3Fu","15-61","07+59","0D^4Eu","16+41","07-103","04+52","14+32","18+71","02^49u","18+92","18^6Bu","06+54","0E-94","07^66u","00-57","09+15","07+78","05-60","09^63u","17-4","11-99","0D^6Du","14+100","0C+115","09^77u","10-107","01+50","07+12","13^44u","12^21u","0D+117","18^32u","04-91","12+17","13-66","10+29","0C^4Cu","0C-8","11^3Du","03^60u","05^5Eu","00+2","14+6","0C^68u","0B+108","0E+49","16+74","06+101","0D^22u","16+39","0B-32","09+44","13+56","05^36u","00^51u","15-125","0E-78","0F+99","10+24","04^32u","04^79u","07-20","0A^29u","15^7Fu","17^37u","07-83","01^36u","11^7Au","03^Au","00^6Au","14^43u","17^70u","14-73","14-17","16+13","14+112","0A^29u","0E^7Bu","02^76u","00-105","12+76","06^21u","01-88","03^74u","0D-29","13+102","15^36u","03^74u","13+74","18+26","14-17","05^9u","09-114","05+75","09+81","0C+35","0B-98","01+95","04-68","10+92","0C+60","0C^4Du","08-111","0F+96","07^51u","09^3Bu","0C^62u","0A+13","0F+19","01^Fu","16+-128","09^10u","16-80","02^16u","11^76u","0D+48","10^53u","12+20","0B^73u","05^70u","02+70","04^2u","0B+7","10+106","0B-118","03^5Au","11^Eu","03^6Eu","13+35","09-43","18-44","12^49u","15-9","05^6Fu","09^27u","17+38","09+23","09^14u","0B-78","14^43u","09-114","05-74","0C-13","12+94","09-12","13+95","05^4Cu","01+8","07^5u","01+13","06^26u","09+46","18-116","14+122","14-22","14^3Bu","08+17","15^Au","18^4Au","04-9","15-88","09-78","09+126","12+6","00+119","05^74u","18-28","18+16","02-120","02^1Bu","04^20u","18-5","01-61","14^5Fu","13+100","17-118","13-72","0D-84","10+41","02^46u","0B^3Du","0E+6","05^19u","17^28u","16+27","08^43u","09+86","01+66","11+84","03+114","04-106","0C^78u","10-11","03^10u","07-96","0F-98","16^42u","06^79u","01^49u","01-32","15^78u","13^27u","01+3","16-107","13-32","05-23","09-106","05-3","06+4","0B^10u","08^74u","04+55","14-106","04-47","17^2Bu","05-114","0D^54u","14+1","0D+112","10^5Fu","00+41","11^Du","00^20u","05-6","14-56","18^62u","12-64","0C^65u","03-19","05^26u","12+92","16^9u","02-21","0A+68","06-35","16-93","03^54u","01+32","08+124","0B-63","0D^75u","05+12","07^17u","0D-41","13-99","0A+78","00+123","0F-23","07+9","16-1","15-60","18^5Fu","0B-64","06^4Du","01^64u","0F-33","10^33u","18-78","08+103","0B^Bu","05^3u","03-67","0C+28","0B^65u","0C+68","0B^67u","0C-74","0A^23u","11-114","12+56","00+121","0E+9","01-29","0B-2","05^55u","12^66u","0E^30u","0B+22","13^5Eu","15-91","0E+58","0A^5Bu","0D^1Au","0F+88","0F-104","10+63","0B^1u","0C-33","18^1Eu","10+55","0E^5Eu","07+84","13+-128","18+32","0B-100","00^10u","11+14","15+33","02-40","0D-9","10-21","0D^6Du","11+64","15-89","10+18","10+75","13-36","0B-72","13^5u","0D+1","07^7Fu","00-37","0A+31","0A^70u","0D+41","00^23u","08-106","01-108","17^1Eu","0F^Au","07+43","07-19","06^27u","15^2u","0F+9","00^7Au","08-22","02^6Fu","16^10u","05^66u","0C+89","0B+112","0D+60","17^14u","05-5","0A^4Eu","05-112","00-86","0A-41","15-28","0D^44u","06+20","07+101","06+102","06^4Eu","14-87","06-24","0A^Du","0E^44u","06-61","0F^4Fu","18-47","0A+113","10^1Au","17^2Cu","16+-128","01+-128","01-47","02+127","04-35","0B^6Eu","02+26","04-83","03-117","04+61","09+36","0D^22u","01+18","0F+102","12^31u","16+62","02+8","12+17","01-123","18-101","14+10","00-96","13+114","16^55u","01+78","17+22","0E-11","13^62u","15+26","17^56u","0B^7Cu","10-93","04+-128","08^77u","07-35","09+57","15-94","12^57u","0B^23u","07-108","08-6","08+79","0C^64u","03+58","10+3","0B+1","00-104","10-14","16-38","01^65u","0B-64","17^5Du","18^58u","05+117","08-65","04-118","0D^6Au","15^53u","05+83","01^4Eu","14+71","0E+21","17^10u","0A+57","01^4u","17+25","12+74","17-70","08^70u","18+26","05+22","0F-33","0F^24u","0B-64","02^6Au","14^5Fu","0A^60u","01-121","08-48","18^19u","07+71","0A-54","15+76","0D-72","0A+12","02-81","02-66","02^50u","0B-97","06-48","11^22u","10^51u","14+16","07+30","14^55u","0A-116","10+14","0E+12","0C^7Du","0E^44u","00^3Bu","16^3Cu","13^2Eu","09^5Eu","0F^2Fu","16-109","10^6Eu","16-23","11+96","0D^7Du","04+26","06^74u","09-53","00-25","0F^66u","04-74","14-113","17+19","06^6Au","17^24u","08^7Au","0D-32","0B+109","13^51u","06^5Du","0F-86","0D+102","0F^75u","16-125","15-17","10^1u","18^66u","03^35u","12-91","01+122","00^43u","07-82","17-10","04^1Cu","0E^5Au","01-82","14-38","13-80","07^7Au","02^19u","10^74u","15^6Cu","0F+104","13-40","00^12u","13-57","06-114","0B^21u","02+53","03+11","15-27","10-5","09-112","0D-119","04^3Bu","01+113","03^2Du","0F^77u","0B-18","05+127","09+48","09-81","03+106","15-28","13-36","0A+81","10+36","0F+100","09-17","14+79","04-28","09+34","00^64u","01+50","04-39","07-42","03+102","10+121","0E+20","10^31u","13-82","03+104","17-12","0C-18","07-31","04-42","06+81","12+44","04^36u","0F^6Cu","10^78u","01-68","06^7Fu","00^54u","18+105","03^57u","01^4Fu","12^12u","06+100","08+22","02-120","04-115","11^2Bu","0B+47","0A^4Du","04+43","03^69u","06^Eu","02+28","02+106","14^26u","0B^8u","16^39u","11+48","16-95","0B+95","15^58u","08+4","0B^36u","0F-110","01-90","07-65","0C-93","0D^1Fu","0F+89","11^75u","15+72","17^57u","10-60","09+13","0E^25u","03^42u","05+30","0B^2Cu","02-56","0F-114","15+111","13+2","0E+12","05+28","09^40u","0B-111","07-82","08^3Eu","16+83","0C-67","0C^16u","06^57u","13+37","07^72u","14+35","0B^79u","05+19","0C-18","0E^35u","08^6Bu","03^Fu","0F^57u","07+24","05^3Eu","14+108","0A-42","02-43","13^59u","0B+43","13+1","15^5u","10^Eu","0A+93","0D+45","07^58u","16-54","11^27u","11-100","02^47u","05^7u","06+76","0C^4Au","06^16u","16-86","13+6","0B^44u","15^12u","0D+115","14+70","15+41","15^4Fu","0A+120","18-107","11^4Cu","13+26","04^71u","04+45","04-38","03+28","04+122","0C-82","18^2Eu","10^42u","14^65u","15^6Bu","17+89","16^Fu","06^4u","16^4Du","14+52","00-45","0B+59","07+13","0E^3Bu","11^7Bu","16^2Au","16-77","18^58u","13^21u","0C-41","13-114","14+23","0F+46","12+1","15+71","0C+35","15+32","13-19","09+67","08-124","04-53","15+60","07-85","03+13","01-36","0D^5Du","0F^6Du","0C-41","00-36","12+51","0F-99","14-60","10^37u","15^76u","04^27u","12-11","01^2Fu","0C+73","04^18u","03^3Eu","08+74","0C-27","0F-40","0D^59u","0C+50","02-8","08^74u","11-110","02-20","05+14","0A-79","0C^72u","05-95","15^6Au","16+47","0D-72","04^3Au","0E-88","04+78","09-113","08^63u","0C+27","0D^3Du","01-68","06-48","18^17u","00+127","12+78","05^75u","04-94","12-9","04-74","12^19u","0F^31u","03-126","0D+113","14^2Eu","17^5Fu","0F+89","16+68","09^70u","0B+39","0D^Cu","02-77","0C-18","04-55","11-105","12-53","04^78u","16-91","16^54u","07+118","0E^78u","0F-86","17-68","00+16","0C-101","01-20","13^17u","0F^77u","08+49","14+55","0C^61u","12+49","0B+67","04+55","04-14","17-29","13^48u","11-4","14-107","0E-29","05-38","16+30","0E^14u","16+69","0F+120","09+5","03^6u","16-39","0D-47","09^6Cu","12-111","04+94","08+93","14-56","16^6Bu","15^6Bu","06+73","0C^26u","0A^3Au","0B-11","11+60","16-92","0C-71","08^68u","0F-112","18-72","0D+116","01^3Cu","0D+86","0C^23u","03-7","10^56u","13^7Fu","12^3Du","03-21","16^38u","15-95","16+25","17-114","08^50u","01+26","14+65","13^7Eu","18+102","10-12","08-27","01^77u","03-107","02+31","03+22","06+62","0D+72","0E+115","0D^6Bu","0A-87","14-71","02^34u","12^68u","07^7Eu","12^1u","05^45u","0F-19","12+88","04+86","11^55u","09^3Eu","11+4","18-79","00+17","04-56","08-88","06^6Du","0E+58","05^75u","07^13u","0A+38","0A-13","07^3Du","14+77","0D+55","13^39u","0E-60","0B^3Bu","15^Bu","0E^29u","11+95","00-118","10+107","09-25","0C^4Au","03+28","04^6Cu","0F-97","0A-126","08+54","16^6Au","13+52","17+56","16^2Fu","0A+17","13^50u","18^10u","12^71u","0B^5u","13-124","05-12","11-62","05^5Bu","10^7u","0E-6","09^34u","15-14","16-108","14+105","00+-128","17^Eu","06-88","16-78","17^70u","05-11","13^80u","0F-25","02-125","0A^8u","14-18","0D+51","07-62","09+10","01^Eu","09+61","01-21","15-37","0C^3Du","02+111","01+70","0C-47","12^72u","00^53u","11+22","03-123","0D+36","0C-108","15-122","11^3Au","18+102","08^28u","06-13","18-19","13^15u","04^17u","01-126","10-36","07+61","05-67","0F-41","15-109","04+14","13+126","18+115","15^7Au","05+100","12+48","0B+53","03-103","07+122","0B^48u","14^38u","07^6Au","01+18","04-24","0D+47","07+16","17^23u","0F+24","0B+120","02^3Cu","0D^77u","01^4Eu","0B^2Bu","05+117","03-99","0D^3Bu","0E+69","04-49","0F+93","0D^16u","0F-20","06^75u","18^2Fu","0C+70","07-115","0D^4Au","0D-53","12^54u","03-120","0E+77","01-4","13+125","00-122","0E^72u","16+123","10+23","02+27","10+90","05-35","13^Fu","0F+67","02^27u","10-101","10+8","0E+119","10+91","09-61","03^44u","11-125","02+45","0E+42","11-98","02^5u","18^3Bu","04-97","18^69u","0B-59","16-121","16^2u","10^1Eu","08-13","08-121","17^71u","07^59u","0B-5","14+105","04^50u","03+94","02-51","0A-57","03-60","0D+78","06+42","04-91","11^61u","0D-26","0B-86","11^69u","02-119","0A-5","17^58u","12-46","18-123","01^3Cu","14^79u","01-124","00+116","06+46","07-94","15+106","15^42u","0D+87","17^1Bu","04-20","0F+45","00-7","03+84","0E+41","07+76","15-106","12-11","07^6Cu","0C^Bu","18^5Cu","09^3Du","0B+89","15-6","11^63u","07+99","00^Fu","06+119","11-121","0D-38","05^25u","12^45u","00^6u","04+31","0B+74","14-60","14^20u","00+90","0B-15","00+49","09-56","07+5","06-97","11^60u","0E-90","15^5Du","12+3","07+24","08^77u","0B^24u","12+86","08-113","05+79","16+29","08-88","09-28","04+61","0D+9","04^5Au","12+74","0F^6Du","0D+68","09-35","01+88","03+94","00-112","0C-57","14^6u","10-29","07-70","12+114","14+78","15+57","14-89","12^52u","10^8u","06^38u","02-117","0B^1Au","14+25","14^34u","11^25u","04+9","0D+116","16+4","0A^51u","09+114","06-34","09^5Fu","0D^6Au","0C-116","0F^1Cu","04^30u","00-13","04^1u","0F-89","0A^65u","14^76u","05^6u","13+49","06^68u","01-33","18^9u","11-28","14+126","09-15","16+2","02-97","07-33","08+22","11-4","16-72","05-68","05^44u","14^53u","06+80","02^60u","0B-63","0A^48u","15+122","0F-48","15-47","0A-66","02+60","02-110","0B-51","07+19","11^38u","01^15u","03+57","11-109","0F+125","18+20","16+112","18+41","05-11","12-110","0E+90","09^4Bu","16-48","0C+76","12-22","0D^49u","07+97","02+3","14^21u","0D+78","0F^2Au","09+35","14-93","06^44u","00+57","0A-89","02^33u","06+61","03^4Fu","18-84","13-58","14^56u","02+70","0F-59","13+7","11^1Cu","16-1","0F^65u","09+35","00-100","03-106","0D-4","0E+7","12-60","07-25","18^Au","15-8","10-54","0B^62u","0F^72u","0E^7Au","0C-116","0D+8","16^6Du","11-5","08+31","0E+14","0C-111","0C+68","0E+114","11^60u","00-124","00^10u","0F-110","0D^54u","15+58","0C^70u","07^33u","06^5Au","14+25","0B^17u","02+81","0D-122","00^61u","04+126","10-84","07+95","06-59","0E-45","02-100","18^70u","10+88","00-72","08^4Cu","02^63u","09^35u","01-125","11^5u","06+15","05-61","10+39","18-23","0C-64","18-102","0F+77","04^4Au","02-36","09+73","17^33u","00^62u","02^62u","14+120","02+123","09+30","0B-73","0A^7Eu","11^17u","15+119","0F^72u","0B-30","01^2Bu","05^32u","11-77","00-51","17^78u","17^2Eu","13+97","03+117","06^7Du","05^46u","11-49","02^4Du","0B+31","0E+127","11-31","0F^6Eu","10-12","0B-66","0F^2Du","14-28","06^50u","02^25u","18+116","13^67u","01^37u","18+36","06+74","08^37u","0B-45","15^69u","0D+106","05-1","01-120","0C^2Cu","18-85","02^4Bu","0C+54","00+38","0D^40u","12+86","13+17","0F-64","09+21","14+89","04+57","14-81","0A^26u","06+25","17+53","02^29u","03^37u","10+19","00+57","15^1Bu","05^10u","07+40","0E+47","13-54","16+54","10+97","10+3","0D-41","02-122","01^33u","0C^16u","09-125","17^13u","08+63","17+109","0C-41","02+84","02+46","05^72u","02+55","0C^5Eu","0C+120","0C-126","0A+55","00-92","12-5","14+58","01+74","05-33","06^3Cu","0E^17u","03+77","0D+33","0F-52","18^46u","0B^66u","0B^Eu","0C+120","12+36","03+108","01-54","00-118","0E^49u","01+31","0D^6Au","0B-44","0B+38","02-96","01+82","0B^47u","0E+60","07-33","17+99","01-19","18^31u","09^4Au","0B+20","0E^4Fu","09^4Au","11+65","00-114","04-12","13-2","14+51","00-122","08-7","0A^1Eu","02-72","0E^1u","0E-87","10^30u","01-85","14-28","07+25","05+18","13-30","0A^64u","14^35u","11-103","01-90","18^3Fu","0A-62","0F-22","0A^22u","05+12","16-51","16-27","14^29u","0F^76u","18+86","16+23","0C+112","16^12u","0F+97","0D^7Eu","0F-31","02+38","07-125","05^70u","18-99","08+55","03-31","18^7u","16^4u","12-57","15^3Bu","09+99","09+90","10-113","18-82","02^18u","18+23","04+80","15^3Au","18^6Eu","17-85","0F+114","0A+26","00^36u","0C^78u","09+78","05+14","09-8","0A^6Cu","01^2Eu","06-57","06-48","12+94","16-30","06+22","11+44","0E^14u","18-30","15^5Du","0C-103","10^7Du","12+79","0C^45u","0B-51","04^59u","07+53","0D+123","06+31","0B^1Eu","08+13","04-48","18+82","11+35","11^14u","04+109","0C-109","12^46u","03^12u","17^6u","07+24","11+69","07+118","17^4Bu","05-7","0F^65u","14-44","11+15","10-122","02+35","16^Du","14-35","11+98","0D-54","12-44","05-84","16^73u","06-97","0D^8u","0C-124","06-44","17+123","01+37","0E+53","07-83","14+70","05-18","04-113","09-29","08-44","0C^33u","11-28","07-110","0F^7Bu","06+38","17^67u","13-40","00^43u","0F+127","0C-102","07^19u","18-127","0F+53","02-112","16+79","0F-46","03^5Du","04-115","05^71u","0F-85","05-49","09^30u","18^66u","01^4Bu","08^64u","00^5Cu","03-106","12-79","07-80","09+-128","0A^4Du","0D-59","02+122","09^76u","14+65","08^35u","16-121","01+26","15-31","0F-59","08^60u","13+87","0B^5Fu","04+69","02-36","06+96","0A+109","11+16","03+102","08^1Fu","0A^Cu","05^23u","18^24u","08^42u","0F+101","09+2","16^27u","11+79","0F+49","0A-4","09+103","08^55u","03-37","11-73","0F+22","0E-60","00-49","10^5u","15-8","02+51","0C+122","08+76","12+-128","17-50","0B-56","01^Eu","09^5Bu","16+115","0F^6Fu","03^70u","15+73","07+127","14-90","01-30","14+76","0C^32u","09+123","0B^3Bu","05^53u","0E-31","0A+92","04-94","09+70","13+12","05^7Du","10-127","10^51u","08+2","17^Au","02-38","08-61","11^30u","09^80u","16^23u","02+103","14^5u","02-43","11^79u","13^4Eu","13^62u","16^37u","01^63u","02+30","16+1","14+-128","17-93","01+106","04+57","06-118","0C-53","05-4","0C+125","14-46","18-73","14-106","15^58u","0A+30","18^69u","09-23","17+20","16+116","0E+67","0F+-128","07+26","0D^2Cu","06^41u","0F^4Du","0D+23","06-37","18+-128","08+112","07-126","12+65","04+48","16-127","03^15u","0D-96","0A-94","12^40u","14+49","00^22u","05^20u","16+15","10^79u","10+98","12^1u","10+75","09+30","01-58","03-10","11+14","0C+76","0A+123","01-103","0F+64","02-122","0C-78","12-116","04-31","0A+1","14+15","05^1u","0E+49","16^6Cu","0E+119","0D-15","16^40u","0C+81","03^Eu","07+113","03+104","13+125","17+12","18^6Au","04^22u","0C+74","10+85","0B-80","02+36","0B^35u","0D+62","0B+124","00+35","0C^1Cu","07-16","0C-110","07-98","0A-84","05^1u","0E-43","03-106","06^25u","16^7Eu","17^8u","09-36","13-53","09-114","15+10","03+126","03-99","01-105","00+39","13-118","10-10","06^6Du","03+6","0A^34u","11+19","16+47","04+97","12^Bu","10+19","07^71u","04+5","14^78u","18^29u","08^71u","18+125","10^51u","06+76","0C^1Du","09-78","09+125","06+22","0D-95","00^21u","07-34","06+84","12^49u","02+88","13+78","17+113","15+23","12-61","06+102","16^31u","05+119","13-1","0E-87","0E+109","0E^77u","0E+78","17^1Bu","00^3Cu","04-107","05-88","04^48u","0D+75","0B-5","0C+3","17^59u","0D^26u","0B+123","01-48","02-25","17+109","05+78","03+31","17+11" };
	
	for (int i = 0; i < 2415; i++) {
		string stemp = list[i];
		int index = stoi(stemp.substr(0, 2), nullptr, 16);
		unsigned opera;

		if (stemp[2] == '+') {
			if (stemp[stemp.length() - 1] == 'u') {
				opera = stoi(stemp.substr(3, stemp.length() - 2), nullptr, 16);
			}
			else {
				opera = stoi(stemp.substr(3));
			}
			sl[index] = uint8_t(unsigned(sl[index]) - opera);
		}
		else if (stemp[2] == '-') {
			if (stemp[stemp.length() - 1] == 'u') {
				opera = stoi(stemp.substr(3, stemp.length() - 2), nullptr, 16);
			}
			else {
				opera = stoi(stemp.substr(3));
			}
			sl[index] = uint8_t(int(sl[index]) + opera);
		}
		else if (stemp[2] == '^') {
			if (stemp[stemp.length() - 1] == 'u') {
				opera = stoi(stemp.substr(3, stemp.length() - 2), nullptr, 16);
			}
			else {
				opera = stoi(stemp.substr(3));
			}
			sl[index] = uint8_t(int(sl[index]) ^ opera);
		}
		else {
			//printf("something wrong!! %s", stemp);
			break;
		}
	}
	
	for (int i = 0; i < 25; i++) {
		printf("%c", char(sl[i]));
	}
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/one_of_a_kind/article/details/83687970
今日推荐