Кресты / Говнокод #8757 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
// Функция регистрирующая ошибку
VOID SetError(DWORD dwError)
{
    CHAR szErr[256];
    sprintf(szErr, "%lu", dwError);
    SetEnvironmentVariable("0xdeadc0de", szErr);
}

// Шеллкод
__declspec(dllexport)
VOID WINAPI Shell(REMSTART *pCtx)
{
    pCtx->pLoadLibraryA(pCtx->sz);
    
    CHAR szVar[] = {'0','x','d','e','a','d','c','0','d','e','\0'};
        
    CHAR szErr[256];
    
    if (!pCtx->pGetEnvironmentVariableA(szVar, szErr, sizeof(szErr)))
        pCtx->pExitThread(ERROR_LOAD_HOOK_DLL);
    
    DWORD dwError = 0;

    for (DWORD i = 0; szErr[i]; i++)
    {
        dwError *= 10;
        dwError += szErr[i] - '0';
    }

    pCtx->pExitThread(dwError);
}

Удивительнейший способ регистрации ошибок в функции DllMain при инжекте библиотеки шеллкодом из другого процесса (кто знает - тот поймет)... линк: http://www.wasm.ru/forum/viewtopic.php?id=43291

Запостил: ReL ReL, (Updated )

Комментарии (22) RSS

  • Эээ... говно в том, что константа '0xdeadcode' повторяется дважды, но никак не названа?
    Ответить
    • хм, наверное в том что переменные окружения не лучшее место для возврата кода ошибки
      Ответить
    • константа '0xdeadcode' во стором случае объявлена так для того, чтобы она попала в сам шеллкод (mov esp[id], char), а не в секцию данных... так что в это комментарии "акелла промахнулся" явно)))
      Ответить
      • А х ты ж ёбаный ты ж нахуй, как всё хитрожопо, оказывается. Я вот никогда не имел дело с программами, которым важно, где на самом деле находится константа.
        Короче, я таки хуй и облажался, ладно.
        Ответить
  • Ой, я знаю ещё один глупый вопрос: где здесь тот самый крестоблядский язык?
    Ответить
    • Си позволяет объявлять переменные только в начале функции, так что судя по коду автор собирает его, как С++ код, поэтому я запостил его в секцию С++, так как Си компилятор его не собирет))
      Ответить
        • не уверен, но мне раньше казалось, что студия 2010 не поддерживает C99... могу ошибаться канеш... опять же судя по коду, он собирается именно студией...
          Ответить
      • ЛПП, в си тоже можно обьявляить переменные где угодно.
        Ответить
      • > Си позволяет объявлять переменные только в начале функции

        Правда?
        Ответить
        • В стандарте C89 можно объявлять переменные только в начале блока (т.е. внутри блока if можно). Сейчас все нормальные компиляторы поддерживают объявление переменных в произвольном порядке.
          http://ideone.com/VNgEC
          Ответить
  • н(MD$E)C,G!E.Z?U,R.D R:F.Z"S,Q:K)X!V!P(X:X$VW.S,B"K,L$W$E:F,K)C Q?F:GR C:Q:K$V:K$V:V"Z!B Q(A QTU,N?P"K,ZJ.X,G(S.J?O?X)M)A,T)Z!C(B(S?A"CFS$U,M)I"O,W)FG,V)AS"D!K?J.U(N:L(X,M,R?F)N?J:R$P.X,P:V,L B.T!Z:E,M)K"K)Y,M!V!T,R F A!O$J$K$N(G I)Z!A$YU.E$Q$P!Y,E!S!OE.W!KAL I:M,I?I"O,O)C$Z:H PB Z?T?Z(O:H!T:B)P.X$P.S.D C"Q$T)X?V F"N,Q,X?C!F J,IX)W GW"N(I?K:R(WT?EOT$IJ:V$L,M?B(E N:G.H"W:T?R)F Q?EE?D"AO(D!G(J?O:EN.Z:T)C O(J"B,Z:BP)U Q)I!C"K(NL.E(Z)D(H B!L:RZ E$B,X X.H)W W,U L(H?V?J,L(I.O.L H!B.X:T:M)W!IH)V!X!W!F"L$LB N"N!N.P?R$F?T!J(VE.K,N L$D O$PN$N!R(U?T V$D,U,P"M$H:F,ZR"R!L$H,V,W,I(K:I)T$L)A,A.W!L$C:O(Y,O.I!D(B.F)J O S$N A(B$Q$E,T$N)W,Z.E)P?W:W(J"Y!R)K(S$Z.U?OX.X$P J:Z(C,E!YZ G"F(K$K.Q(J X R)K.Q(Z?J!B:A:X(C:A(D(W"J H(M.G G(Q"M:R(H:A?V)M(X Z?F,D"I)J!X.YM"F"Q,U!D$TH,G?G:S!G V Q"I$I(M(C.U!K?E.GB!TF!B,X.S$Z J$S:Q.G!A"X?Z?A!S.T"H)O)Y)D,K W XI?G:C.XD?H$Z,O.A?J.A$Y,C?O!T.V:W:J(Y.E"B!QU,H.U U?J.C!I,X"K(C!Q"Y)S!J,T?I)H(U:J$E)H H,R:U K.X H:T!D$B C?L.V)C V!B?Y)P"U"R P$E!U"R)C G?W P:E(T,K!D,N?D$C,U)H!Q.Q V!G!F)W!Z:L,N?R!Y"T,X Z U!K!R!D R)FE$G:F(U:HL U C HMU!Z)J QYT(Q)X)R.LA:H.BR?S(R:U?N!A I:R?M:R:C)S,K C,W$A)RG!B?YA!I)A"J$Y?Z,Y(VB(N!Z.Z,F.X,V(D?P:Q,R"H$I!X$Q?B$MN$S$F.O.V V?Z!A?QP C!Z"T.E$D.S(P?N)I$L A(O:O,Z!G:A"V:C,P"I(R I(P Z?Z.T?Z?Q(QA J)F S:V,P"V?U,F$J,Z"R.P:K!M!K.X$A,C!E(I(I?M)B,R:O(K X?F(XV$C?Z,O P K)L"IP(Z(I"T,Y T,P?A?J)A F:I"W,R,H$R!L:N?WC NP"W)H(X:B!VK.B)IO S!K"Y.E,L!X"J.G!LQ$R!Y!J!Y$R:R W J"I S!H,L$Z:P"S(U CПEZUXPFWWFFCLPMWWLTZGQYXANRPXMDJZPSLPSJKF
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8